refs #611 SERVER-991 Added ability to trim array as part of a $push.

Conflicts:
	src/mongo/db/ops/update_internal.cpp
	src/mongo/dbtests/repltests.cpp
	src/mongo/dbtests/updatetests.cpp
refs #611 SREVER-991 Fixed debug compilation.
refs #611 SERVER-991 Allowed trimTo to be a double if it's not fractional.
refs #611 SERVER-991 Fixed the last few trim's to trimTo's.
refs #611 SERVER-991 SERVER-8008 Replaced $trimTo by $slice (but only accepting negative slices for now).

Conflicts:
	jstests/push_sort.js
	src/mongo/db/ops/update_internal.cpp
	src/mongo/db/ops/update_internal.h
	src/mongo/dbtests/updatetests.cpp
refs #611 Server-8008 Allowed to sort the result of a $push array when using $trimTo.

Conflicts:
	jstests/push_sort.js
	src/mongo/db/ops/update_internal.cpp
	src/mongo/db/ops/update_internal.h
	src/mongo/dbtests/updatetests.cpp
refs #611 SERVER-8008 Moved checks for sort pattern to early and performed them only once per update.
refs #611 SERVER-8008 Fixed uassert numbers.
refs #611 SERVER-8303 Fix $push with a single $each clause behavior.

Conflicts:
	src/mongo/dbtests/updatetests.cpp
refs #611 Fix various things broken during cherry-pick