key encoding, opts.{l,g}t{,e}

This patch looks at the `db.options.keyEncoding` or you can set the `opts.keyEncoding` yourself, fixing #2. I also added support for `opts.lt`, `opts.gt`, `opts.lte`, and `opts.gte` for parity with leveldb core since custom encodings touch the same part of the code.