Partial classes

After our discussion on the mail list, I split Assert.cs into separate files. I like how it works. @rprouse if you want to nest them, feel free to push to the same branch before merging.

I played around with TestExecutionContext, but didn't come up with a satisfactory way of splitting it up with all the special platform stuff in a single file. I made minor changes to clean it up a bit.

This will impact other work, so let's review as quickly as we reasonably can.