To prevent similar issues from happening in the future, all code to pull
results off of the shards cursors in agg now go through a single function.
This function was enhanced to propagate runtime error codes as we already do
with parse-time errors reported from the shards.
This means we won't ask the query framework for the score since there
shouldn't be any. This ensures that results for missing text scores are
consistent with missing fields.
To enable this, Documents now can store "metadata" that gets carried though
the pipeline as long as the result is the same logical document. This includes
crossing the shard-to-merger boundary.