Beginning functional test for containers column.
Switch to an internal list of machine tokens.

By using an internal list, we can re-render specific tokens by pulling
them from the list and simply calling render(). First step towards very
efficient and intelligent rendering of only deltas.
Fixed bug 1321345
Merge pull request #333 from jaycee/test-love-3-functional-containers

This adds two functional tests:
* A test that containers are rendered when a machine is selected.
* A test that containers can be selected via click.

It's follow up to a previous PR, which ensures the containers column is
thoroughly tested.
Merge pull request #335 from hatched/inspector-1321345

When charm urls contained a hyphenated name and a charm version number the package name was not parsed correctly when creating a new model.

#### To QA
- Use the il and mv flags (This bug only presented itself using these flags).
- Search for the `juju-gui`.
- Drag and drop it onto the canvas.
- Click the service icon to open the inspector.
- Close the inspector
- The service token should still read `juju-gui`
Merge pull request #325 from kadams54/machine-token-rendering

First pass. Everything works, tests pass, but the code probably isn't as pretty as it could be. Additionally we still re-render the entire machine token; I haven't started on making that smarter to only re-render (for example) the list of icons. I suspect we'll also want to switch the unplaced units to a similar approach once this work is finished. At that point we'll be able to eliminate `smartUpdateList()` - yay!

### 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.