Make bitvector iterator ctor private.

One should instead use the static member functions to safely obtain a
well-defined iterator. Because we're dealing with a forward iterator, it's
still possible to default-construct the iterator.
Rename bitvector position accessor.
Remove obsolete iterator state.
Add polymorphic bitstream iterators.

This commit is motivated by the idea that users of bitstreams should be unaware
of the concrete bitstream implementation. This includes stateful traversal of
these structures, which we implement using iterators. But these should have
value semantics while at the same time hide their concrete type. Hence we chose
the same concepts-based polymorphism as for bitstreams themselves.

Unfortunately copying iterators now involves a heap allocation and thus becomes
costly. If this turns out to be noticeable performance hit, we should rethink
this design. It would be nice if we could switch to the notion of ranges where
only the range object itself is "fat" and opaque while providing light-weight
copyable iterators internally.