Change the changeSet datastructure

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.