DBCursor's OptionalFinalizer inner class is now static and only contains fields for a Mongo instance and a ServerCursor instance.
Doing this prevents it from holding references to the DBCursor state which it does not actually need, allowing the garbage collector
to reclaim that memory before the finalizer runs.

 JAVA-1519
Merge pull request #272 from jyemin/j1519

JAVA-1519: DBCursor's OptionalFinalizer inner class is now static ...
Added protocol methods to Connection so that operations no longer have to construct instances of Protocol directly.
Introduced ConnectionFactory interface to make it possible to unit test DefaultServer exception handling

 JAVA-1510
Moved all classes in com.mongodb.protocol and com.mongodb.protocol.message into com.mongodb.connection,
in preparation for making them all package private.

  JAVA-1510
Refactored Protocol to rely on InternalConnection instead of Connection,
and then removed byte-level messages from Connection.

  JAVA-1510
Now that Operation implementation rely on methods on the Connection interface,
made all Protocol and Message classes package private.

  JAVA-1510
Removed use of GetMore and ServerCursor classes from Connection interface.

  JAVA-1510
Moved WriteRequest and subclasses from com.mongodb.operation to com.mongodb.bulk

  JAVA-1510