[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.