canonical ranges

this pull request adds canonical ranges to leveldown.
(`gt, gte, lt, lte`, as discussed in https://github.com/rvagg/node-levelup/issues/118 )

The code is ugly. This is the first thing I've done in C++ since forever.
There is a great deal I still don't understand, so I've mostly cut and pasted bits
and poked around until I found something that worked.

Still at least we have a reference implementation, and tests that pass.

https://github.com/rvagg/node-abstract-leveldown/pull/16

Still fully backwards compatible with `start, end` (iterator tests have not changed, only new tests have been added)