rem: new remapping support for remappable devices
rem: add stubs for initialization of rem layer
rem: add rescan functionality
nvd: rename from rem to nvd

Non-volatile devices is more descriptive of the solution than remapping
devices.
lightnvm: An open FTL for open firmware SSDs

LightNVM implements the internal logic an SSD within the host system.
This includes logic such as translation tables for logical to physical
address translation, garbage collection and wear-leveling.

It is designed to be used either standalone or with a LightNVM
compatible firmware. If used standalone, NVM memory can be simulated
by passing timings to the dm target table. If used with a LightNVM
compatible device, the device will be queued upon initialized for the
relevant values.

The last part is still in progress and a fully working prototype will be
presented in upcoming patches.
nvd: rename functions
nvd: change interface
nvd: move lightnvm to nvd

Make lightnvm a part of the nvd layer.
lightnvm: begin converting to nvq
lightnvm: rename _per_bio_cache to _per_rq_cache
lightnvm: rename per_bio_pool and per_bio_data

to their request based counter-parts
lightnvm: refactor bio into requests:
lightnvm: move from bio to request
LightNVM: Fix ups to make it rq ready
LightNVM: more fix ups
openvsl: allows drivers to hook into openvsl
vsl: updates to vsl
vsl: more updates
vsl: update headers
vsl: move files around to support the new vsl logic