Rewrite the bundle machinery to separate interface and predicate.
Change define-bundle-interface to require its definition names to be
spelled out in the definition rather than being constructed by the macro; the
result is much like define-record-type.
Change the bundle lookup to use a binary search rather than a linear search,
which will help when using large bundles. Although we might want to have a more
flexible search strategy since it's not exposed to the end user.
Add support for pretty-printing bundles similarly to records.