Machine view: validate series when placing units.

Define a "prepare" section on the ecs record.command:
this way it is possible to mutate the command args
right before its "runtime".

The above is used by lazyAddMachine: the new machine series
can be decided at the last minute, based on the series of
the units assigned to the machine.

Add the ability to validate the unit's placement based on the
series.

Fixed a bug preventing units to be deployed directly to
bare metal (unknown unit .../root-container).

Add some missing tests.

QA can be done in both devel and real envs.
With `/:flags:/mv/`, use the machine view.
Add machines/containers and try to co-locate
units with different series: you should see an
error notification, and the unit should refuse
to be placed.
Now deploy a precise unit to a new machine: a precise
machine should be created when changes are committed.
After that, trying to co-locate e.g. a trusty unit
in the existing precise machine should produce an
error notification.
As we discussed in IRC - I like adding a prepare function functionality because it simplifies the interactions when items are removed compared to using the current method of modifying the changeset on add. We should make a point to go back soon and update the other changeset calls to use the prepare function where it makes sense. Maybe as a follow-up?