Add more options for the Lookup operation (#201)

This renames `NearestGreater` and `NearestSmaller` enum values for the `Lookup`
option as discussed in #201 and it adds two additional options. The options are:

    Exact | ExactOrSmaller | ExactOrGreater | Smaller | Greater

The second and third one are renamed `NearestSmaller` and `NearestGreater` respectively.
@hmansell suggested using `AtLeast` and `AtMost` as the name - which is nicer and shorter,
but I like the above because it is more explicit (and I think perhaps easier to
see the difference). However, I would be happy with other naming too - so please send
your comments!

I also used the new lookup features to simplify `GetRange` (as discussed earlier).

As a side-note, the commit adds a test based on #146.