Go to metadata (first iteration)

Sending a PR so that you can comment on.
Exit criteria to define :).

Here's a list of things that should be done:

* [x] include argument names
* [x] interfaces
* [x] abstract/static members
* [x] static classes/opaque classes that are not modules
* [x] implemented interfaces
* [x] handle empty classes/struct/interfaces
* [x] abbreviated types
* [x] optional parameters
* [x] F# exceptions
* [x] delegates
* [x] display ``default``/``override`` members
* [ ] method/property attributes
* [x] sort implemented interfaces
* [x] class type attributes
* [x] display members before static members
* [x] sort members by display name

Bonus:
* [ ] include open directives so that IStructuralEquatable/... are not wiggled
* [ ] xml comments
* [ ] Enhancement: events special formatting (currently ``add_XXX``, ``remove_XXX``)

Iteration 2 should contain:
* recursive "go to metadata" capability
Is there any particular reason that we use `String.concat` on arrays before and use `String.concat` on lists here? `String.concat` uses `String.Join` under the hood; it's probably better to use string arrays consistently.