Initial authentication work
Ported MongoClientURI refactoring from 2.11.0 release.
Passing MongoCredential list through from MongoClients down to the sockets
Added authentication support when using a MongoClientURI.
No longer assuming that every command failure has a "code" field.
Avoiding infinite recursion when authenticating.
Fixing tests to work with authentication
Adding serialVersionUID
Adding support for org.mongodb.useSocket system property to gradle build
Fixing  PMD and FindBugs warnings