FB 33239 add mutable document revision

See https://gist.github.com/mikerhodes/c022e9e44d83c2e4747e for mini spec (objective-c version)
This is a case for using an options object as the number and order of arguments in the constructor is unwieldy. I thought you liked this sort of refactor?