Remove the power-of-2 block size constraint on discards in dm thin
provisioning and factor the bio_prison code out into a separate
module (for sharing with the forthcoming cache target).

Use struct bio's front_pad to eliminate the use of one separate mempool
by bio-based devices.

A few other tiny clean-ups.