TEST: Goal test for `New-Object`

Currently failing.
REFACTOR: Avoid using `ToString()` as part of an class's contract.

`ToString()` is great for diagnostics but it's a bit dodgy for other
uses. For example, it can't be localized, so it shouldn't normally be
showing in the UI.

One that I would have liked to fix, but did not, is in
`GetMemberCommand.ProcessRecord()`:

    members.Add(new MemberDefinition(fullName, info.Name, info.MemberType, info.ToString()));

It was beyond my understanding to pick a good fix, so I let it go for now.
REFACTOR: LINQ-ify `CommandManager.LoadCmdletsFromPSSnapin`
Remove error supression from `CommandManager.LoadCmdletsFromPSSnapin()`

This code would take exceptions and turn them in to `Diagnostics.Trace`
messages, which i'll never see unless I think to look for them. Meanwhile,
I spend an hour chasing down some obscure bug.

We're not hitting exceptions here at the moment, so it looks safe to rip
this code out. And now, when I break something, I'll notice a little
faster.
REFACTOR: LINQ-ify `CommandManager.FindCommands`
A little bit of `New-Object`

- No value types
- No ctor parameters
- No COM objects
- No unreferenced assemblies
- No assuming 'System' namespace.
`System.` prefix is optional.

Now you can do `New-Object Foo` for `System.Foo`.
`New-Object` is case-insenstivie
`New-Object` on something not in `mscorlib`.

`Type.GetType()` looks in the current assembly and in `mscorlib`. If you
want something different, you have to use `Assembly.Load().GetType()`.

In this checkin I also create a Spikes project. It's full of NUnit tests,
but it's not about learning. It's a place to learn by experimentation. The
experiments can be saved, as an easy way of recording what we learned.