Note that this is changing the exception hierarchy somewhat as well,
as I would rather not muck things up with multiple inheritance. This
is a breaking change if you depend on ConnectionFailure being an
IOError or InvalidBSON being a ValueError, for example. If this
creates issues for anybody please let us know and we can figure out a
better workaround.
Also add Michael to contributors list.