Improvements to C# language

* Namespaces, classes, enums, interfaces and structs now properly use
  "title" class
* Qualified identifiers supported in namespaces, method/property return
  types, inherited types, etc.
* Multiple and nested generic arguments supported by type, method and
  property declarations
* Generic constraints on type declarations
* Better keywords in function parameters
* XML doc tags treated as XML language
* True, false and null treated as literals instead of keywords
* Pragma disable/restore
* Type declarations (class, interface, struct, enum) get "class" class
* Type declarations wrap inheritance declarations in "inheritance" class
* Each inherited type is wrapped in "parent" class
* Properties wrapped in "property" class
* Attributes wrapped in "attribute" class
I got all of these from existing languages (apart from "generic-constraints" - I made that one up :smile: ). Happy to remove them, but it's a shame about "property" - it mirrors "function", "class" and "attribute" nicely. I'll update the PR, and fix the tests, too.