Change the result type of ScriptableCollection.save() to ScriptableFuture.
Implement setter function for ScriptableDocument.

A setter function of ScriptableDocument sets the value and returns
the document itself.

If a document has a field named someField, there will be a function
named someField. This function can be used in two ways:
- Get the value of someField when called without an argument.
- Update the document with the changed someField when called with one
  argument.

This patch also renames currentValueInDB to the plural form.
Implement ScriptableCollection.save().

This method updates the document.