PYTHON-226 - Optimize ObjectId creation from BSON

This change optimizes creating an instance of ObjectId
from a 12 byte bytes instance. It gets us most of the way
to what was requested in the ticket without creating a
separate subtype just for decoding.

There are also a number of changes to clean up the module
in general and silence pylint complaints.