Reuse first EWAH marker if it's empty.

Relates #26.
Add support for partial block append.
Simplify construction and assignment.
Fix setting correct marker type.

Relates #26.
Devise algorithm for bitwise operations on compressed bitstreams.

This commit introduces a generic algorithm to perform binary bitwise operations
on compressed bitstreams. The algorithm supports both symmetric (AND, OR, XOR)
as well as asymmetric (NAND) binary operations.

The algorithm expects the concrete block-wise operation as a binary function
object in the third argument. We expect users to provide a trivial lambda which
the compiler can easily inline, e.g., for XOR:

    [](block_type lhs, block_type rhs) { return lhs ^ rhs; }

Relates #26.