JAVA-845, JAVA-963: Added support for use of a different service name for Kerberos Authentication via GSSAPI.
By default, the service name remains "mongodb", but can be altered via the addition of a "SERVICE_NAME" mechanism property to the credential.
JAVA-827, JAVA-966: Support SASL PLAIN authentication mechanism
JAVA-871, JAVA-976: Support for MONGODB-X509 authentication mechanism
JAVA-953: LazyBSONObject incorrectly decodes BSON regular expressions
JAVA-952, JAVA-978: Check query failure bit for OP_QUERY and OP_GET_MORE responses.
back port agg fixes  resolves issues:  JAVA-968, JAVA-970, JAVA-972

Squashed commit of the following:

commit 0f90109f14780e066566b57607ab131b4dacc63c
Author: Justin Lee <justin.lee@10gen.com>
Date:   Wed Oct 2 17:51:13 2013 -0400

    use two collections

commit 0bf6ece31d48984e2481a7c03b84196b96ffef4a
Author: Justin Lee <justin.lee@10gen.com>
Date:   Wed Oct 2 17:35:31 2013 -0400

    cleaning up force readPreference to primary with $out
    use the correct input collection for aggregation

commit 1660765342351b486bc17baa67e92a94855de27e
Author: Justin Lee <justin.lee@10gen.com>
Date:   Wed Oct 2 14:39:51 2013 -0400

    force readPreference to primary with $out

commit e4734941f9f5da28a0699f4bcdde9f06df0331be
Author: Jeff Yemin <jeff.yemin@10gen.com>
Date:   Wed Oct 2 12:32:27 2013 -0400

    Got rid of "done" field in ResultsCursor, since cursorId is sufficient.
    Added a call to CommandResult.throwOnError in DBCollection.aggregate, since DB.command does not throw on error
    Added a failing test, for sending a $out to a secondary.  It should re-route to the primary.

commit ae8287b686eb10d61dffb90b4979766793a72347
Author: Justin Lee <justin.lee@10gen.com>
Date:   Wed Oct 2 09:38:01 2013 -0400

    backport of 2.6 aggregation new features from 3.0.x
pass $out to the old style aggregation()
Update README.md

Putting back some accidentally removed contributors
Merge pull request #148 from rozza/patch-1

Update README.md
check the server that was used
added a new test that fails inexplicably
debug to see why this check doesn't work on jenkins
I'm dum
JAVA-979 2.12: Add helper for explain on an aggregate command
Java 955 - Throw exception when DB name contains spaces
Added Test Cases/ Refractoring
Moved DB Name validation logic / Removed Null check as it already throws NullPointerException
Updated Error Message
optimized imports
Updated Test Cases
Reusing cleanupMongo