Destroy machine when last principal unit removed.

This change causes a machine to be automatically removed when the last principal unit running on that machine is removed (remove-unit). If the machine is a parent to any containers, it is left alone.

Background:
https://bugs.launchpad.net/juju-core/+bug/1206532
https://bugs.launchpad.net/juju-core/+bug/1183309/comments/8

This could use more test coverage, but I'd like to get a general feel for how it's looking so far before I go much further with it. This is my first time mucking around with state transactions. Please let me know if I've got it right!

I haven't added an option to keep empty machines/containers around after removing the last unit. I'd like to see if we can avoid it. If we do need the option, I think it should be opt in. Let me know.
At the very least, we probably want a comment just above this something like:
// Check if this is the only unit that is on the machine so it is safe to cleanup now that this unit is going away.

Also, all of your other checks are the negative form and return "nil, nil" so we probably want to do that here as well:

if len(m.doc.Principals) != 1 || m.doc.Principals[0] != u.doc.Name {
  return nil, nil
}

That way all the conditions are the same direction so you don't have to invert your thinking midway through.