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