support omitting range key where appropriate

This PR adds support for getItem, deleteItem, updates using only a hash key. It should solve the #19 and is a fuller implementation of #51, which was closed by the author before review, merging.

I've added tests to a new test suite for this case, and I'm pretty sure I've tested the cases needed to ensure this is working (by copying and ever so slightly revising tests from other suites), but please let me know if there's some other case I'm missing.

A more general API for describing table structure w/constraints described in #19 might be useful, but something like this PR would be necessary anyway.