Use -O3 for release builds.
Tweak the profiler.

Spawn it detached and flush it at the given profiling interval.
Refactor bitmap implementation.

We now use CRTP consistently for storage and the coder policies. We also moved
cardinality tracking from the storage to the coder, where it belongs.
Perform lazy append for equality bitmap coding.

This makes reduces the time complexity of the append operation from O(c) to
O(1) by only updating the bitstream of the given value. Graphically, this
constructs the following bitmap:

        a b c d
      +---------
    1 | 0 0   1
    2 | 1 0
    3 |   0
    4 |   0
    5 |   1

As opposed to before:

        a b c d
      +---------
    1 | 0 0 0 1
    2 | 1 0 0 0
    3 | 0 0 0 0
    4 | 0 0 0 0
    5 | 0 1 0 0