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
Sounds good, thanks for the language lesson. As long as we can maintain that the error messages are easily made human ready (such as in the GUI presentation) with a simple and consistent algorithm this seems cool. I went through the list of errors in the massive failing test case and they all seem to fit the pattern well. It's something we can keep in mind in error generation in the future.