Bifunctors

A run at bifunctors to tackle #20.  [left/right]Map's proper type signatures have proven a bit... difficult with the current definition of Const.  They should probably be fleshed out before this is merged.  I'd also be open to anything that reduces the awful number of typealiases in Bifunctor.