Refactor CMS, SketchMap, HLL to use a new Hash class

The requirement to have a function K => Array[Byte] is fairly janky, so we decided to use Injections and Bijections and whatnot (in the future, we'd like to split out the core algebird stuff that doesn't need bijection so it is a bit slimmer, and then if you want the fuller experience with CMS etc you'll need the bijection dep).

Regardless, I got rid of a number of implicit views and tried to have a more reasonable way of dealing with hashes in a typesafe way that leverages existing combinators.