Migrate delete_collection to new signature

We're being explicit with URLs, query strings, & headers now instead of
implicit.  This will help with clarity and will eventually allow us to remove
the `URI` class.

There's some extra cruft in the `send_request` method for now to ensure
backwards compatibility with the existing methods, until I can get them all
ported over.  This keeps our tests passing.
Migrate get_key -> get, new signature

This method name is more in line with the other clients.
Migrate put_key -> put, new signature

Again, tracking the other clients' method names and signatures.

Converted the query & headers portion of send_request to an options hash, now
also grabs body from that.  Reasoning: method and url are not optional,
everything else is.
Migrate delete_key -> delete, new function sig

Again, this matches what the other clients seem to do.  The node client uses
"remove" instead of "delete", but that's new and I think "delete" maps to the
operation better.
Allow passing in an unquoted ref value.

Basically, allows you to use "12345" instead of "\"12345\""

This is backwards-compatible with quoted refs people might have stored.
Migrate purge_key -> purge, new signature

It is unclear what the API is supposed to do when both ?purge=true and If-Match
are specified.  I would *assume* that it behaves as expected, that is, purge if
the If-Match is satisfied, ignore if not, however I don't like to assume.  None
of the other clients' documentation seems to address this, so I have ignored
the combination for now.
Migrate get_by_ref -> get

None of the other clients have an idiomatic way of doing this yet, but
providing an optional ref to the `get` method feels right to me.  They return
the same sort of thing, you're just providing and additional condition for the
value you want returned.
Migrate put_key_if_none_match -> put_if_absent

Method name copied from go client, defers to put method
Migrate put_key_if_match -> put_if_absent

Using the same method name from the Go client.
Migrate list to new signature

Using f.e. :start_key vs :startKey is more ruby-ish.  The inline conversion is
a bit ugly, but it can be extracted, and we don't want to rely on ActiveSupport
migrate search to new signature

Again, required parameters are given their own argument slots, optional ones an
options hash at the end.
NEW get_event method, get_events -> list_event

You guys have been busy!  I didn't see this one when going through the first
time.

Anyway, Client#get_events has migrated to #list_events, it will gain the new
signature in the next commit.  Client#get_event implements the Events.Get
action described here: http://orchestrate.io/docs/api/?go#events/get18

I believe this is the first client implementation of this :P
migrate list_events to new signature

This is still called 'getEvents' in the Go client, but I figure list_events is
a better name.  It uses a similar function signature, and takes query options
for start/end after/before.  There is a new module, Orchestrate::Helpers, that
contains the logic for that, and I will move the key list function's stuff to
that.
Make Client#list use Helpers.range_keys!

Keepin' it DRY
rename test for list_events
Implement post_event (create)

A new API method appears!
Migrate put_event to new signature

Also updated it for the new timestamp/ordinal API format.
migrate get_graph to new signature, add traversal

New feature!  You can now traverse more than one graph relationship by passing
in more than one relation kind as the second argument.

Note that if your kinds are in an array, you can do f.e. this:

kinds = ['family', 'friend']
client.get_graph('people', 'john', *kinds)
Migrate put_graph to new signature

Not much to say here, really.
Migrate delete_graph to new signature