Push bitstream rendering down to the implementation.
Refactor the bitmap index implementation.

We no longer use type erasure on the bitstream type for the concrete bitmap
index classes. A new template parameter allows for selecting the bitstream
implementation at compile time. However, the result of query operation still
returns the type-erased class vast::bitstream because vast::bitmap_index does
not know about the concrete bitstream type, and each concrete bitmap index
derives from vast::bitmap_index. If this turns out to be too limiting, we can
simply add a new function that returns the concrete type, but for now we'll
stick with one simple interface.
Support polymorphic bitstream rendering.

Bitstreams are now polymorphically convertible to std::string's.
Cosmetic maintenance.
Fix partial order of predicates.
Do not even try to fetch a zero-ID'ed segment.

Normal index hits do not start with an ID of 0 beause this is an invalid ID.
When building the complement of a hit the very first bit gets flipped, which we
could either mask out or ignore. For now we'll go with the latter approach.
Avoid unnecessary copy.
More cosmetic touch-ups.
Require GCC 4.8.
Get rid of Boost.Regex dependency.
Provide sub() and gsub() for strings.

This commits adds an implementation of the well-known sub() and gsub()
functions for string replacement.