Add compression_scheme to block header.
Support per-block compression schemes.

Introduces a virtual base class that provides compression and
decompression functions for a given compression scheme enum value.
Cache the can_read/can_write checks for read/write batches.