Add factory function to create bitmap indexes.
Rewrite some type traits in simpler form.
Provide an offset alias for std::vector<size_t>.

This gives clearer semantics to the code and the opportunity to later optimize
if it turns out to be too much of a heavy-weight data structure.
Unfix the singleton fix.
Use reference semantics for pointer serialization.

We now serialize all pointers as objects and assume reference semantics for
such types. Otherwise we could just directly serialize the pointee. As a
result, all pointer-based serializations require announced types.