support sending reports to shh

Reporting to SHH can be enabled by setting the `report_mf` env variable
to `{report_mf, {ehmon_shh_report, send_report}}`.
implement submitting reports to shh

Using either `ehmon_shh_socket` or the combined configuration options of
`ehmon_shh_host` and `ehmon_shh_port` it is now possible for ehmon to
report erlang vm metrics to a listening shh process.

Connections to shh will automatically be re-established if lost. Any
received reports while a connection is down will be queued up and sent
when the connection is reestablished.
formalization and productionalization

A pile of refactoring. Moved the two separate tcp and unix gen_servers
into a single gen_server with reconnect, buffering and buffer replay
logic.
fixup renamed env vars and replace ssh for shh
be a better OTP citizen

Logs unexpected calls, casts, and info messages. All of which never
warrant any kind of response.
make gen_unix a soft dependency

The gen_unix library is not used by the default configuration. It is
only required when a user wants to connect to shh via it's listening
unix socket.

A note has been added to the README.rst file noting this soft
requirement.

When a user attempts to configure ehmon to communicate over unix socket
and the gen_unix app is not available the following standard error will
be displayed.

```erlang
1> {"init terminating in do_boot",{{app_start_failed,gen_unix,{"no such file or directory","gen_unix.app"}},[{ehmon_app,start_ok,3,[{file,"src/ehmon_app.erl"},{line,67}]},{ehmon_app,start_ok,3,[{file,"src/ehmon_app.erl"},{line,64}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}

    Crash dump was written to: erl_crash.dump
    init terminating in do_boot ()
  ```
clearer warning message when cannot connect to shh
Merge pull request #3 from heroku/shh_reporting

Shh reporting