Extract doozer abstractions

This splits out the common abstractions used for doozerd access.
Especially the handling of values over time (snapshots). This
bring the codebase into a state where it is exclusively concerned
with the bazooka domain objects and reflects that in its API. All
visor types should implement cp.Snapshotable.

* Types implement cp.Snapshotable
* Extract Snapshot, Dir, File, Lock, Unlock, conn, codec
* Remove explicit Rev handling
* Expose visor types exclusively
* Improve error handling
Remove 'Endpoint' from EventData
Merge branch 'master' into feature/doozerd-extraction

Conflicts:
	codec.go
	instance.go
FastForward before init
Remove check for cotterpin error
Merge pull request #91 from soundcloud/feature/doozerd-extraction

Extract doozer abstractions