SERVER-11204 Catch c++ exceptions in JSThread
SplittableDocumentSource shouldn't inherit from DocumentSource
SERVER-4816 Sharded agg $sort now merges sorted streams

This enables using indexes for sorting on shards, and gives better distribution of work.

Explain before:

mongos> db.runCommand({aggregate:'foo', explain:true, pipeline: [{$sort: {_id:1}}]})
{
        "splitPipeline" : {
                "shardsPart" : [ ],
                "mergerPart" : [
                        {
                                "$sort" : {
                                        "sortKey" : {
                                                "_id" : 1
                                        }
                                }
                        }
                ]
        },
        "shards" : {
                "shard0000" : {
                        "host" : "localhost:30001",
                        "stages" : [
                                {
                                        "$cursor" : {
                                                "query" : {

                                                },
                                                "indexOnly" : false,
                                                "cursorType" : "BasicCursor"
                                        }
                                }
                        ]
                }
        },
        "ok" : 1
}

Explain after:

mongos> db.runCommand({aggregate:'foo', explain:true, pipeline: [{$sort: {_id:1}}]})
{
        "splitPipeline" : {
                "shardsPart" : [
                        {
                                "$sort" : {
                                        "sortKey" : {
                                                "_id" : 1
                                        }
                                }
                        }
                ],
                "mergerPart" : [
                        {
                                "$sort" : {
                                        "sortKey" : {
                                                "_id" : 1
                                        },
                                        "mergePresorted" : true
                                }
                        }
                ]
        },
        "shards" : {
                "shard0000" : {
                        "host" : "localhost:30001",
                        "stages" : [
                                {
                                        "$cursor" : {
                                                "query" : {

                                                },
                                                "sort" : {
                                                        "_id" : 1
                                                },
                                                "indexOnly" : false,
                                                "cursorType" : "BtreeCursor _id_"
                                        }
                                }
                        ]
                }
        },
        "ok" : 1
}
Rename SplittableDocumentSource::getRouterSource to getMergeSource

In 2.6 it won't run in mongos any more so it became a misnomer.
Allow agg Expressions to have differing serializations and explains

Currently only used by ExpressionCoerceToBool which can't be parsed directly so it serializes as an
$and which then optimizes to $coerceToBool.
DocumentSourceGroup should optimize its Expressions
Clean up ExpressionCompare
Remove unused step and nRowsOut members from DocumentSource
Get rid of DocumentSourceFilterBase

Since we removed DocumentSourceFilter it is only inherited by DocumentSourceMatch.
Clean up Pipeline::getInitialQuery() and DocSourceMatch::toMatcherBson()

Both now return a BSONObj rather than appending to a passed-in builder.
DocumentSourceMatch::toMatcherBson become getQuery().
SERVER-11184 Merge consecutive $match stages in agg
SERVER-11224 Update help for aggregate command
SERVER-11250 Add DBCommandCursor.help() method in shell

Also cleaned up DBQuery.help() slightly