Add ScriptableObjectId.
Use ScriptableObjectId instead of ObjectId in JavaScript.

ObjectId will only be used internally.
Make ScriptableDocument return ScriptableObjectId instead of objectId string.
ScriptableCollection.insert method can take an object id.

When passing a JavaScript object that has an object id field, the given object
id will be used as the object id. If the objectId field is null,
ScriptableCollection generates ObjectId.
Apply ObjectId changes to examples.
Implement ScriptableCrypto.

ScriptableCrypto is a wrapper of Play's Crypto object for Rhino,
which provide basic encryption and decryption methods.
Separate OptionParser from ScriptableFileSystem object.

There are many cases where we need to parse optional JSON object.
With the OptionParser class, we can parse the object into a Configuration
instance.
Implement type-1 UUID method in UUID module.

v1 is the type-1 UUID method generating timestamp-based UUID.
node-uuid's v1 method is referred to for the method design and
implementation.
Make ScriptableQuery handle ScriptableObjectId.

Currently, ScriptableQuery cannot handle ScriptableObjectId, because it
uses AnyRefBSONHandler directly. We need to make AnyRefBSONHandler
handle ScriptableObjectId or ScriptableQuery changes ScriptableObjectId
to ObjectId before using AnyRefBSONHandler.

I decided the second choice because AnyRefBSONHandler is used by
ScriptableDocument with convertJavaScriptToScalaWithField method. And
ScriptableObjectId is not passed to AnyRefBSONHandler in this case.