Lots of API specification updates
These are all the changed we have had to make to the specification to get it working properly in the real world. It has been a while since I created a PR, and I just rebased onto the official code to pick up all the changes for IOSS updates. But all the changes I made are probably relevant to anyone else using the YAML spec, since the stuff I changed is wrong (and certainly difficult to use with C#).
BTW, I noticed the API spec added a bunch of new enumeration values, but they were added in the MIDDLE of the existing enumerations. This is a really bad idea for code generation in C# because it becomes a numeric enumeration when it is parsed, so while the values passed over the wire are strings, the internal values are numeric. So if you add a new value in the middle, the numeric values change. This means anyone consuming the C# API library will need to recompile to use the updated API definitions when the enumerations change. To fix this, any changes enumerations really need to have new values added to the end?
I am going to rebase on top of the latest changes, but is there a reason my changes cannot be accepted upstream? All of these changes are necessary changes to correctly build a C# client library that works in the wild.