[dm-cache] factor out alloc/free_prison_cell in preparation for the
cache target handling its own cells.

Despite what the comment for mempool_alloc says, it can return NULL if
GFP_NOWAIT is passed.
Merge branch 'dm-devel-cache' into dm-devel-cache-v3.9-dm-core-editing