variable hint size WIP
[dm-cache] don't shrink the cache unless all dropped blocks are clean.
[dm-cache] Change the resize method to check that blocks are unmapped
or clean when shrinking.

Is this patch adequate on it's own?  Previous patch didnt check for
unmapped regions.
[dm-cache] use an enum to record the writethrough/writeback state rather than a simple bool.
[dm-cache] introduce passthrough mode; currently behaves like writeback
[dm-cache] introduce a method to invalidate a cache entry.

Drops the mapping without doing a writeback first.
[dm-cache] implement passthrough mode using the invalidate() method.
Merge branch 'passthrough-mode' into cache-coherency-changes
[dm-cache] Change the result parameter to __superblock_all_zeroes() to be a bool.

Also squash a warning where the compiler erroneously thought it could
be used uninitialised.
[dm-cache] map all reads to the origin in passthrough mode.
[dm-cache] add comments about the various io modes.
[dm-cache] fail to load a cache table in passthrough mode if any blocks are dirty.
dm-cache-policy-hints: new + add dm_cache_policy_set_hint_size() to support it
dm-cache-metadata.c: fix missing policy_hint_size stored in superblock
dm-cache-policy-hints.c: optimize using macros for endianess conversion of hints values
dm-cache-policy-hints: free hints_buffer on destroy
dm-cache-mezadata.c: address hint vaue buffer FIXME:
dm-cache-policy-hints.c: fix loop in __hint_xfer_disk()
dm-cache-policy-internal.h: drop max hint size to 256 bytes
dm-cache-policy-hints.c: fix typo. remove superfluous conditional in free_hash()
Merge remote-tracking branch 'github-heinz/heinz-variable-hint-size' into cache-coherency-changes