Refactor / Orchestrate API Parity

This PR's goal is to improve the client's API and to bring it up to parity with Orchestrate.

## API Improvements
- Values in results are stored in `json.RawValue` (`[]byte`) fields with helpers provided for unmarshalling JSON (Addresses #2)
- Put methods are offered which accept `interface{}` types and marshall into JSON or raw `io.Reader` types

## API Parity
- Support for `start` and `end` parameters for Event listing
- Next/Prev pagination helpers
- Conditional PUTs
- Purge Delete
- KV Listing