NVMe: only call vsl_ioctl if NS is a LightNVM device

Ensure vsl_ioctl hook is only invoked if the namespace is
configured to act as a LightNVM device.
vsl: ioctl command renamed for naming consistency
vsl: vsl_ioctl return code signalling unhandled ioctls

Defined a return code which, if returned by vsl_ioctl, signals
that the ioctl isn't a valid vsl ioctl and thus likely unique to
the device driver, thus requiring further driver-specific
processing
vsl: (re)defined vslkv userspace command structure and opcodes.
vsl: Refactor allocation of pages and blocks

Moved functionality responsible for acquiring a page from an
append point out from core.c and into vsltgt.c seeing as the
concrete implementation of this will vary according to data
placement strategies, which themselves are tied to a particular
target type implementation - hence function is now defined by
the field 'map_page' in 'vsl_target_type'.
vsl: progress on key-value store

The code is very rudimentary and subject to imminent, large-scale
changes - but it hints at the final form.
One large, fixed size hash with 0.25 bucket occupancy and 16
entries per bucket - h1(key) modulo the number of buckets
determines the resulting bucket, and each entry will contain a 16B
MD5 hash of the key (h2(key)) to further reduce the likelyhood of
genuine collisions while still not retaining the full key.