charm: add BundleArchive

This adds the remaining logic for bundles.
Some remains to be done later (e.g. manifests) but
can be left for now.