Update to match JS api

The third commit (4dcd99dedf34de8a14003f505ad88ed4286c8e04) retains the document passed to the completer because otherwise the proxy is invalidated by the time the future callback is called. This is not a great solution because then the handler is responsible for releasing it. However, I don't see a way around it unless the file load callback is passed in like the other two instead of using a future at all.
This is also true for the loadAppDataDocument added in (93fc39b68ee6eb9849dd44cc758196d19f192bdd)