style(formatting): jscs style fixes

Also removed duplicate middleware function.
fix(logging): added bunyan for saner logging

I wanted to avoid the `if (debug) console.log` pattern
fix(cache-config): allow passing of opts for redis client
fix(cachedriver): set prefix for keys

* prefix keys so they can be distinguished from other data
* clearAll now deletes keys by prefix (instead of wiping your db, lol!)
fix(cache): add cache headers for hit and miss
fix(logging): correct log level for stream
feat(groups): moved groups index to redis set

The in-memory implementation of groups would not work with multiple
processes. If you are using this module it's for scaling and should
be running multiple node processes anyways.

These changes won't be compatible with the memory cache, but as
mentioned above the memory cache won't support cache invalidation
with multiple processes anyways.

* fixed some logging typos
* moved clearing of a group to it's own function for simplicity
feat(callbacks): optional callbacks for hits/misses

Useful for reporting stats.
feat(groups): added support for multiple groups

Support array groups so a cache entry can be expired from one or
more keys.

ie. the cached request is for 3 bottles of wine, we could update
any 3 of those entries and expire the cache

fix(logging): fixed typo on logger name