Key storage is linked list.

Whilst this increases memory usage it will enable commands such as
RANDOMKEY to have an O(1) time complexity and enable the scan command to
be implemented.

It makes setting and deleting keys slower as it needs to scan the key
list (indexOf/lastIndexOf) in order to remove the key, however it will
make the KEYS command faster as it now no longer needs to call
Object.keys().

Decided on indexOf to determine the key index in the list under the
premise that keys are less likely to be removed shortly after creation.
Key storage abstraction.

Command handlers now need to call getKey(), setKey(), delKey() etc to
modify the underlying data.

This allows the storage design to be changed without and changes to the
command methods, for example to support key expiry or if we wish to
maintain an index into the keys array to prevent the call to indexOf()
when deleting keys.
Emit and assert on write event.
0.1.23
Update deps.
0.1.24