Orchestrate::Application constructor

baby steps
Orchestrate::Collection
Collection#destroy!
Collection#[]
KeyValue#load / #initialize WIP
Collection#[] returns nil on NotFound
KeyValue#[], #[]=
KeyValue#save handles failure cases
KeyValue#save!
refactor common errors to helper
resolve test class name conflict
KeyValue#destroy, #destroy!
KV persistence tests extracted
leftovers from previous
tests in one place
KV#last_request_time
KeyValue#destroy[!?] unsets the ref

The thinking here:

1) Delete sets the value of the key on the service to a null object

2) #save[!?] normally sends If-Match with the value of @ref

3) The key still exists, you can get the full ref history, etc.  You can
re-create it, and keepings its value around may prove useful.

4) If you call #save again on the deleted KV, it will save without the
'If-Match' header
resovle CollectionTest conflict
Collection#[]= and #set for KV
WIP Collection#create