Json write api

WIP for adding constructors to the types generated by JsonProvider

* [ ] Support record type (currently appearing as IJsonValue in the constructor signature)
* [ ] Make the constructor arguments a tuple, so we can use optional parameters for the options
* [ ] Tests
* [ ] Docs