Make collection.save method return a Future of the saved document on success.

Currently,  save method returns a Future of LastErrorMessage. But the updated
document is needed in most cases.

This patch makes save method return a Future of the saved document on success.
Change the behavior of ScriptableFuture.andThen.

Change andThen to do exactly the same thing as flatMap except it does not pass
the result of this future to the andThen callback. andThen will be used only
for sequencing.
Rename ObjectID to ObjectId.

ObjectID class is exposed to JavaScript, so it is better to follow the mongo
shell's naming convention to avoid confusion.
Extend newObject and newArray methods of Rhino Context.

Currently, arguments must be wrapped in an array when using newObject
and newArray method. It makes code verbose.
Refactoring code to use ContextOps.

The previous patch impelents ContextOps to extend newObject and newArray
methods. This patch makes code use ContextOps.