`Store.MaxChannels()` => `CanStore()`.

Simplify `NoStore`.
Add failing handshake test with channel IDs.

Remove redundant `TestHeloReset` test.
Extract handshake logic into `Worker.handshake()`.

Ensure `handshake()` resets unknown device IDs if channel IDs are
specified.
Merge pull request #119 from mozilla-services/bug/existing-handshake

Ensure `Store.Exists()` looks up the correct device ID
consider uaids/chids as opaque UUIDs

Don't convert them to binary for storage. We lose some storage
efficiency doing this, but impact less clients.
NOTE: this will render any current data stored in memcache to be
invalid or unfindable. clients will have to reregister after this patch
is applied.
Merge branch 'dev' of github.com:mozilla-services/pushgo into bug/opaqueCHIDs

Conflicts:
	src/github.com/mozilla-services/pushgo/simplepush/api_test.go
	src/github.com/mozilla-services/pushgo/simplepush/no_store.go
	src/github.com/mozilla-services/pushgo/simplepush/server_test.go
	src/github.com/mozilla-services/pushgo/simplepush/worker.go
Avoid decoding `nil` config structs.
Merge pull request #122 from mozilla-services/bug/nil-structs

Avoid decoding `nil` config structs
Merge pull request #120 from jrconlin/bug/opaqueCHIDs

consider uaids/chids as opaque UUIDs
Add `testExistsHooks`.
Restore channel limits for `NoStore`.

Fix off-by-one errors in `CanStore()`.
Remove `TestStore`. Add `make test-memcached`.
`NoStore`: Assume all device IDs exist.

Closes #118.
Merge pull request #123 from mozilla-services/bug/no-store-exists

`NoStore.Exists()`: Assume all device IDs exist
Include the version and tag in status reports.

Closes #121.
Merge pull request #124 from mozilla-services/feature/version

Include the server version and revision in the status report
Disconnect duplicate clients.

Per @nikhilm's request.