Sandbox mode for juju-core

The GUI relies heavily on a sandbox mode and fake backend that mimics all of the functionality of a Juju environment in memory within the browser. This is how the GUI runs on, in fact, and it is how we do much of our development. To ensure that both the environments for juju-core and the older pyjuju are fully represented, each of these is present in a sandbox form. A branch has just landed (and will be available in the next release) which completes all of the required operations in the juju-core sandbox mode. This means that we now have a full-featured testing and devel environment for the GUI and core which does not require spinning up any machines!

This is also the first step to implementing one of the newer features available in core that was not available in the older pyjuju: upgrading charms within a service.