Update service icons on a machine.
Consistent API for DB event handling.
Eliminating dupe tests.
Merge pull request #320 from kadams54/machine-service-icons

### 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.
Refactor the deployer view to easily add changes version of summary.
Dragging and dropping the unit token on the machine view headers or the machine and container tokens places the unit in the appropriate place
Show recent list of changes in the summary panel.
* The changes button pops up the summary panel with the recent changes.
* When the panel is open, the changes button closes the panel.
* Deploy confirmation summary info is _not_ shown when the recent changes are shown.
* Likewise recent changes are not shown when the confirmation is up.
Added tests and fixed some edge case bugs
Merge pull request #322 from jaycee/uncommitted-change-list-deployer-bar

The changes button on the left of the deployer bar can now be used to show
recent changes in the summary panel. This largely reuses the logic of the
deploy confirmation functionality, with some refactoring to allow both actions
to coexist.

There are still changes necessary to for this work to be done:
* The recent changes should be rendered in the confirm deploy version, in a
  collapsed summary panel that can be expanded.
* There is still a lot of visual polish necessary to match the mockups.

QA:

with :flags:/il/mv/

1) Deploy a service
2) Click "changes" on the left of the deployer bar.

You should see a list showing that the service has been added and a unit for
that service has been added. You should not have deploy buttons or other
controls.

3) Click "changes" again.

The the summary panel should close.

4) Click deploy

You should see the usual deploy confirmation; it should all work normally.
Merge pull request #321 from hatched/unplaced-drop-targets

Dragging and dropping the unit token on the machine view headers or the machine and container tokens places the unit in the appropriate place.

Note: This branch does not properly update the UI as that brings with it a whole other suite of issues so it's out of scope of this branch.

#### To QA
- Open config-debug.js and disable the simulator
- Use the il and mv flags
- Drag a service to the canvas
- Switch to the machine view
- Drag the unplaced unit token to the New Machine header (No ghost machine UI will be created)
- Click Deploy/Confirm - note the deployment summary (The UI will be broken switch to service view then back to machine view for the real UI)
- Switch back to the service view and drag and drop a different service to the canvas
- Switch to the machine view and drag the unplaced unit onto the machine with the previous service on it.
- Click Deploy/Confirm - note the deployment summary
- Switch back to the service view and machine view again to update the machine view UI. Now you should see two icons in the machine token. Clicking the machine token will then show you the two containers, one bare metal and one lxc.
- Now switch back to the service view and drag yet another service to the canvas.
- Switch to the machine view and click on the machine with the two services.
- Drag the unplaced unit to the New Container header
- Click Deploy/Confirm 
- Switch to service view and back again (The machine should now have three icons)
- Click this machine and you should see three containers.

Note: There is a bug somewhere between placeUnit and the ECS which causes units dropped on existing containers to be placed in new machines. This is out of scope of this branch so a card has been created.
Cleanup the toggling of the unplaced units message
Merge pull request #324 from hatched/toggle-unplaced-cleanup

This is a small branch to clan up the toggling of the unplaced units message. See my comment on PR #300 for the original branch.

#### To QA
- Use il/mv.
- Open the machine view, the unplaced units message should be visible.
- Click the + and the subsequent x for the mass scale up UI and the message should hide/show appropriately.
- Switch to the service view and drag a charm onto the canvas.
- Switch back to the machine view, the message should be hidden.
- Toggle the mass scale up UI, the message should not appear.
- Drag the service to the new machine header and then click Deploy/Confirm - after a bit the unit token will disappear and the unplaced message should show up.
- Close/open the machine view and toggle the mass scale up UI, the message should show/hide appropriately.