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
for the error messages, since they will probably get shown to the user, can we make them complete sentences with capital start and ending in a period? This way tools can present them to users in a new line and they'll read nicely.