Initial pass at creating a functional EnvironmentChangeSet class which is the cache instance for the up and coming deployer bar.
Added utils directory to the make file so that the utils file is included in prod and debug builds
Added tests for the ecs methods
Added the public and private env tests to the env change set
Added ecs test to ghost inspector tests
Review changes making the ecs class more functionally.
Merge pull request #184 from hatched/environment-change-set

Adds the EnvironmentChangeSet class who's responsibility it is to keep track of the actions the user makes in the environment for dispatching at a later date.

__To QA__
- Start the GUI with the flag `ecs`
- Drag and drop a charm from the charm browser and click the Deploy button once
- Open the inspector and run `app.ecs.commit()` and your charm should deploy.
Use simplified URLs for promulgated bundles.

Avoid showing the user part in the bundle URLs
displayed in the bundle browser view header and
in quickstart instructions.

Also moved the bundle location above the deployment
stats in the header, so that the URL is not hidden
by the "Deploy this bundle" button.

QA:
- make devel/debug/prod;
- search for bundles and pick a promulgated one;
- check the simplified bundle URL is showed in the header
  and in the quickstart howto (Deploy tab);
- now pick a non-promulgated bundle: this time the user
  is properly included in the URL.
Merge pull request #187 from frankban/promulgated-bundles

Avoid showing the user part in the bundle URLs
displayed in the bundle browser view header and
in quickstart instructions.

Also moved the bundle location above the deployment
stats in the header, so that the URL is not hidden
by the "Deploy this bundle" button.

QA:
- make devel/debug/prod;
- search for bundles and pick a promulgated one;
- check the simplified bundle URL is showed in the header
  and in the quickstart howto (Deploy tab);
- now pick a non-promulgated bundle: this time the user
  is properly included in the URL.
Handle peer relation for missing services.

    QA:
    - juju-quickstart the GUI in a local env;
    - juju set juju-gui juju-gui-console-enabled=true
    - deploy wordpress from the JS console:
      app.env.deploy('cs:precise/wordpress-21', 'wordpress', null, null, 1, null);
      You should see a "Relation added without matching service" error;
    - destroy the wordpress service using the GUI inspector;
    - now switch to this branch:
      juju set juju-gui juju-gui-source="https://github.com/frankban/juju-gui.git reorder-delta";
    - wait for the GUI to be ready again, this takes a while;
    - reload the GUI (CTRL-SHIFT-R);
    - deploy wordpress from the JS console:
      app.env.deploy('cs:precise/wordpress-21', 'wordpress', null, null, 1, null);
      You should see a "relation change wordpress:loadbalancer delayed"
      log message, and the wordpress relation tab should show the peer relation;
    - done, destroy your environment, thank you!
Merge pull request #186 from frankban/reorder-delta

QA:
- juju-quickstart the GUI in a local env;
- juju set juju-gui juju-gui-console-enabled=true
- deploy wordpress from the JS console:
  app.env.deploy('cs:precise/wordpress-21', 'wordpress', null, null, 1, null);
  You should see a "Relation added without matching service" error;
- destroy the wordpress service using the GUI inspector;
- now switch to this branch:
  juju set juju-gui juju-gui-source="https://github.com/frankban/juju-gui.git reorder-delta";
- wait for the GUI to be ready again, this takes a while;
- reload the GUI (CTRL-SHIFT-R);
- deploy wordpress from the JS console:
  app.env.deploy('cs:precise/wordpress-21', 'wordpress', null, null, 1, null);
  You should see a "relation change wordpress:loadbalancer delayed"
  log message, and the wordpress relation tab should show the peer relation;
- done, destroy your environment, thank you!