The current `BSON` typeclass has a really confusing name, maybe we should: - split the implementation into **two** typeclasses, similar to [aeson](http://hackage.haskell.org/packages/archive/aeson/0.6.0.2/doc/html/Data-Aeson.html#t:FromJSON); - give them proper names, ex: `ToBson`, `FromBson`.