Support hash-range keys in dynamokv (API compatible)

Support defining and using tables with hash and range keys.
Now keys are expected to be an object like {hash: x, range: y}

The previous keys as plain strings are still supported for backwards
compatibility.
Use mocha Shared behaviours to simplify tests

Replace the same tests with different parameters with shared
behaviours: running the same functions with different
values in "this".

https://github.com/visionmedia/mocha/wiki/Shared-Behaviours
Add list on hash key functionality

Adding new method because the parameters of the previous
list handling methods dont fit with the hash-range approach.
Report deleting an unexisting key as error
Adjust hash field exist condition for overwrite

To not overwrite on a table with only hash key, hash should
not exist.

But to not overwrite on a table with hash and range key, we must
make the range key unique. If we make hash and range unique, it
wont insert when hash matches and range doesnt.

This requires more investigation (how to make unique the *pair*
of hash and range key).
Upgrade to 0.2.0. Support hash-range keys. Deprecating list-on-value.