Optimization for parsing mongo ObjectId

The ObjectId(byte[]) constructor is pretty inneficient. It wraps the
bytes in another ByteBuffer. Ideally there'd be an ObjectId(ByteBuffer)
constructor.

It's was also possible for there to be a copy in TBaseHelper.rightSize.
So this change prevents that.

A change could also be made to TCompactProtocol.readBinary to prevent it
from making a copy.
enum annotations part 1
omit extra parens on result() method if no implicits
require primary_key annotation on mongo structs
2.0.0-M8
fix ObjectId parsing optimization for tagged types
2.0.0-M8a
Add UntypedForeignKeyField with unsafeObjGetter
2.0.0-M9
Merge pull request #42 from paperstreet/master

Add UntypedForeignKeyField with unsafeObjGetter