removes legacy Value "createType" functions

uses constructor instead
exchanged toBson(Obj|Array) to serialize in agg
Literal syntax for Document/Value similar to BSON() and BSON_ARRAY()
Add Value::consume() to create an Array-typed Value without copying

Currently few places construct arrays, but more are coming soon. Note
that this can't be used for things like $push's getValue() since that
can be called multiple times so the array needs to be preserved.
Accumulators are not Expressions so they shouldn't derive

There may be a place for a common parent of "tree-like" things, but
Expression is not the correct base. This commit keeps the public API of
accumulators the same so consumers don't need to be modified.
SERVER-9840 Introduce the concept of Variables into aggregation and add $let to set them

As fallout from the main change, ExpressionObjects now need to be told
at construction time when they should use the semantics of a root object
in a $project (special handling of _id).
Rename ExpressionMap typedef to FieldMap

Prep for SERVER-9841 which will use ExpressionMap for $map
SERVER-9841 $map expression for aggregation