Add a firehose channel

The firehose will syphon off select messages and submit those messages
to a pool of available firehose channels. This allows for subset of logs
to be redirected down a known smaller group of channels.

The firehose is controlled via two environment variables
`FIREHOSE_CHANNEL_IDS` and `FIREHOSE_FILTER_TOKENS`. Both are comma
separated lists. The former is a list the list of channels the firehose
will use. The latter is a list of interested app token names that should
be filtered down the firehose.
```
FIREHOSE_CHANNEL_IDS="1000,1100,1200"
FIREHOSE_FILTER_TOKENS="events,metrics"
```
The above variables would filter all "events" and "metrics" log messages
down the firehose. The firehose itself will shard logs across three
channels, 1000, 1100, and 1200 using random distribution.

The firehose can be disabled at runtime by simply calling
```erlang
logplex_firehose:disable().
```

Once disabled the firehose can be enabled again by using
```erlang
logplex_firehose:enable().
```
This allows for dynamic reconfiguration of the firehose by modifing the
logplex application env variables at runtime. Those variables are
lowercase versions of the OS environment variables
`firehose_channel_ids` and `firehose_filter_tokens` respectively.