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
I think I just wanted to verify the change of behavior. Currently a placement of 0 is allowed to place it on the environment's machine 0. This will alter that placement behavior of existing bundles and we need to make sure we're aware and plan for getting the word out as well as identifying/updating things like promulgated bundles that might use this feature.