Implement create container workflow

Adds support for creating different types of containers, including KVMs with constraints. Regardless of how you get into the workflow (dropping on a header drop target, using the header link, dropping on an existing container or machine), the full workflow should now occur, rather than the previous abbreviated one that assumed an LXC container.

## QA

With the `mv` flag. Test all the various entry points for creating a container:

1) Click on the "Add container" link. (Note: should this link be hidden when a machine is not selected?)
2) Drag and drop an unplaced service on the container header (when a machine is selected).
3) Drag and drop an unplaced service on an existing container (should add directly, no need for the create form).
4) Drag and drop an unplaced service on an existing machine (should bring up the create container form).
5) Click on the move icon for an unplaced service - try with both existing containers and new containers.

Aside from the above, just try to break things in various ways. Be sure to verify that any bugs found are not present on upcoming.jujucharms.com, as there are still a lot dragons to be slayed. For example, the container column is not great about updating if you have one machine selected and then drag and drop onto another machine.
This is working now but I'm a little concerned that we will run into intermittent test failures because the async request doesn't complete before the first assertion runs. Could you look into wrapping these assertions in an `after` handler.