Extract ObjectID code into bson-objectid module

Closes #99 and addresses #96 

Some tests needed to be removed since there are a few differences (which I'm 100% open to discussing).

The differences are:
* No internal cache for the hex string. I'd like to explore performance use case for this (seemingly undocumented?) cache. It's not hard to add in.
* ObjectID.isValid(time) and ObjectID.isValid(idString) didn't make sense. Looking for clarity on the use cases here too. For now, it strictly checks for a valid 24 character hex string.

cheers