Add support to placeUnit for placing a unit on an already existing machine
Added tests for placeUnit functionality in the ecs
Switch to an internal list of machine tokens.

By using an internal list, we can re-render specific tokens by pulling
them from the list and simply calling render(). First step towards very
efficient and intelligent rendering of only deltas.
Fixed bug 1321345
Merge pull request #335 from hatched/inspector-1321345

When charm urls contained a hyphenated name and a charm version number the package name was not parsed correctly when creating a new model.

#### To QA
- Use the il and mv flags (This bug only presented itself using these flags).
- Search for the `juju-gui`.
- Drag and drop it onto the canvas.
- Click the service icon to open the inspector.
- Close the inspector
- The service token should still read `juju-gui`
Merge pull request #325 from kadams54/machine-token-rendering

First pass. Everything works, tests pass, but the code probably isn't as pretty as it could be. Additionally we still re-render the entire machine token; I haven't started on making that smarter to only re-render (for example) the list of icons. I suspect we'll also want to switch the unplaced units to a similar approach once this work is finished. At that point we'll be able to eliminate `smartUpdateList()` - yay!

### QA

With `/:flags:/il/mv`.

1. Deploy the Wikimedia bundle.
2. Drag-n-drop the Wordpress charm over, but don't deploy it.
3. Switch to machine view.
4. Run this in your console:
~~~~
var u = app.db.units.item(2), m = app.db.units.revive(u); m.set('machine', '0');
~~~~

You should see the Wordpress icon added to the 0 machine.
Updated deployer changes panel to match designs.
Merge pull request #331 from huwshimi/deployer-bar-visuals

Updated the deployer changes panel to match the visuals (https://drive.google.com/a/canonical.com/?usp=folder#folders/0B7XG_QBXNwY1WGlyVzN2LWtrcmM)

QA:
Drag a service to the canvas.
Click the "2 changes" link in the deployer bar.
Check that the panel matches the visuals.
Merge pull request #334 from hatched/unplaced-to-existing

1. Fixes a bug with `ecs.placeUnit` which would cause dropping an unplaced unit on an existing container to fail.
2. Adds tests for `ecs.placeUnit`.

#### To QA
- Open `config-debug.js` and disable `simulateEvents`.
- Open `app.js` and add `this.fakebackend = state` after line 418
- Load the GUI using the mv and il flags.
- Drag and drop a charm to the canvas. 
- Switch to the machine view.
- Drag and drop the unplaced unit to the `New Machine` header.
- Click `deploy` and `confirm`.
- Switch back to the service view.
- Run `app.db.machines.add({id: '0/lxc/0'}); app.fakebackend.db.machines.add({id: '0/lxc/0'})` in the console.
- Drag and drop a new charm to the canvas.
- Switch to the machine view.
- Select the `0` machine. You should now see an empty container and 'Bare Metal' with your previous service.
- Drag the unplaced unit and drop it on the empty container.
- Click `deploy` and `confirm`.
- Switch to service view and back to machine view. You should now have placed your new service on that container.