charm: add BundleData, parser and Verify method.

This is the start of the bundle specification discussed at https://docs.google.com/document/d/1SF8hTBi6oVbki8V__beNij6wnQU-5cm6PZsy5gf0j_Y
Yes, that is a change in behaviour. I believe it's correct though, as the bootstrap
machine may not exist any more, so those bundles are technically incorrect.
Are you aware of any bundles that require the bootstrap machine itself,
rather than just piggybacking on that machine because it's known to
exist to save resources?

In our migration strategy, it would be straightforward to insert a machine
entry for machine 0 when translating an old-style bundle.

It would also be not hard to add an annotation when that's happened
and have front-end behaviour to automatically map the notional
machine 0 to the actual bootstrap machine, but I'm not sure that's
actually desirable in the long term.