Change the `Store.{Fetch, Put}Ping()` signatures.

`{Fetch, Put}Ping()` now accepts and returns byte slices instead of
strings. This allows proprietary ping plug-ins to define custom
serialization formats.
Config: Load proprietary pings after storage.
Refactor `GCMPing`.

* Change the `PropPinger.Register()` signature to `(uaid string,
  pingData []byte)`, where `pingData` contains opaque ping data sent by
  the client.
* Change the `PropPinger.Send()` signature to `(uaid string,
  vers int64)`. The proprietary ping plugin is now responsible for
  retrieving the ping data from the backing store. This simplifies the
  logic in `Handler.UpdateHandler()` and `Serv.Hello()`.
* `PropPinger.Send()` now returns `(ok bool, err error)`. The plugin
  should return `false, nil` if the request succeeded, but the device
  could not be woken up. `UpdateHandler()` will then send the message
  over the WebSocket.
* Fix `GCMPing.Register()` so that it no longer stores request-specific
  device and registration IDs in `GCMPing.config`. Since pingers are
  created per application (rather than per client), the previous
  behavior would cause GCM requests to stomp on one another.

The refactored `GCMPing` has been tested with GCM for Chrome, using the
"GCM Notifications" app to generate registration IDs.
Merge pull request #81 from mozilla-services/feature/pinger

Refactor proprietary pingers