Convert the changeSet data structure to a flat structure with key references to parent commands.
Fixed tests fro the changeSet data structure conversion
Merge pull request #196 from hatched/ecs-flat-structure

This branch changes the changeSet data structure from a tree to a flat structure with reference to it's parents. At the moment it executes them top down but in follow-up branches I will implement the 'wait for parent' procedure.

#### To QA
- Load the GUI using the `ecs` flag
- Drag and drop ceph and click deploy once.
- Open the console and run `app.ecs.changeSet` and you should see a single record. Take note of the key name.
- Execute, substitute the previous key for the service name: `app.ecs.setConfig('service-xxx', {'http-port': "80802"}, null, {'http-port': "8080"}, function() {});`
- Run `app.ecs.changeSet` and you should now see two records.
- Run `app.ecs.commit()` and your charm should now be deployed.
Add the new environment header to allow switching between the service and machine views.
Merge pull request #193 from huwshimi/environment-header-view

This branch adds the new service/machine view header as see here: https://docs.google.com/a/canonical.com/file/d/0B5yaFXSrLF38aVk4ZXJZY0tJZWJTUy1GVXlScmZRS21rUFJv/edit

The contents of the header are still to be finalised and may well only contain the service/machine view links. As this is under a feature flag I figure we can finalise the contents in a follow-up branch.

The widget is being attached in app.js which won't be its final location, not sure if there is a better place for now.

When the machine view is implemented the sidebar won't be able to be minimised so the code to handle the header moving will go away.

The layout of the controls uses flexbox and I have tested that it works in Firefox, Chrome, IE10, IE11 and Safari. It would be good to QA that it works for others.
Fix bug #1296646: charm details links should open in a new tab.
Merge pull request #199 from huwshimi/link-targets

Fix bug #1296646: charm details links should open in a new tab.