Add a `read_config` helper.

Allow environment variable overrides.
Add `Dockerfile` and instructions.
Add `PushTestCase#close`.
Add `allow_dupes` and `case_sensitive_keys`.

Ensure `str2bool` accepts the same values as Go's `strconv.ParseBool`.
`TestNotify`: Use random device and channel IDs.

The server now ensures that device and channel IDs included in `hello`
and `register` messages are valid UUIDs. Prefixed IDs are no longer
supported.
Clean up the smoke tests.

* `str_gen`: Use `os.urandom()`.
* Use valid UUIDs in all server calls.
* Set `allow_dupes` and `case_sensitive_keys` as `PushTestCase`
  attributes.
* Remove unused `add_epoch()` function.
Fix notification and smoke test failures.
Merge pull request #2 from kitcambridge/dockerify

Dockerify and clean up the smoke tests