Prototype.
Tests and lint pass.
Merge pull request #314 from makyo/unit-placement

QA in sandbox:

- disable the simulator;
- drag/deploy a service;
- get a reference to the new service unit:
  `var unit = app.db.units.item(0)`;
- add a new machine to the db:
  `var machine = app.db.machines.add({id: 'new1'})`;
- add the new machine to the ECS
  attaching a callback that will remove the ghost machine:
  `app.env.addMachines([{}], function() {app.db.machines.remove(machine)}, {modelId: 'new1'})`;
- add a new container to the machine:
  `var container = app.db.machines.add({id: 'new1/lxc/0'})`
- add the new container to the ECS
  attaching a callback that will remove the ghost machine:
  `app.env.addMachines([{parentId: 'new1', containerType: 'lxc'}], function() {app.db.machines.remove(container)}, {modelId: 'new1/lxc/0'})`
- place the unit in the container:
  `app.env.placeUnit(unit, 'new1/lxc/0')`
- click deploy and confirm (status bar);
- everything should work.

Perform QA in real env, also make sure placing units on root-level machines works
Console error messages as requested by hatch on _addIconsToUnits
* Both the case where no service is found and the case where the service has no icon are logged.
* Tests added.
Namespace the machine view tokens.
Fix unit mapping to machines.
Merge pull request #315 from jaycee/nice-big-blowup

* This addresses a request from hatch that the _addIconsToUnits method log an
  error under certain failure modes that would otherwise be silent.
Merge pull request #319 from huwshimi/machine-unit-matching

Unit mapping to machines was broken because it was doing partial id matches on the position of the match e.g. if the machine id was "1" it would match "14/lxc/0" or if it was "2" it would match "26/lxc/0".

QA:

Deploy some services and let the simulator run. Once the number of machines is over 9 the additional units created by the simulator were being mapped to the machine with id "1". This should no longer happen.

After the simulator has been running for some time, in a console run `app.db.units.filterByMachine("1", true)` and all the units returned should have `.machine: "1..."`.
Merge pull request #317 from huwshimi/fix-tokens

Fix the namespacing of the machine view tokens as the styles were affecting the sidebar tokens as well.