WIP: Implemented non-drag-and-drop unit placing workflow

This is a work in progress of implementing unit placement.

I didn't manage to finish this before the weekend so I thought I'd push it up in case anyone wanted to take a look.

I still need to add tests for the final step of the placement (actually moving the unit to the machine/container).

I also am not sure if we can use constraints for creating machines/containers, or if we can, how to do it.

QA:
Use il and mv flags.
- Drag a service to the canvas. Click Deploy and Confim.
- Drag a different service to the canvas. Do not deploy.
- Open the machine view.
- In the "Unplaced units" column there should be one unit. Click the icon on the right hand side.
- A select box should appear and you should now be able to follow through with adding to a machine/container, creating new machines/containers etc. All the paths should work.