Friends don't let friends use MSTest

MSTest doesn't work on CI servers without installing Visual Studio (which is a retarded idea) or by [jumping through some stupid hoops](http://blog.anthonybaker.me/2013/05/running-mstest-without-visual-studio.html).

### Main changes
1. `[TestMethod]` -> `[Fact]`
2. `[Category(..)]` -> '[Trait("Category", ...)]`
3. `[TestInitialize]` -> Constructor
4. All Asserts where converted to their xunit equivalent. `Assert.IsEqual()` -> `Assert.Equal()` etc 
5. In the case where there were no equivalent assertions i.e. `StringAssert` & `CollectionAssert`, [FluentAssertions](http://www.fluentassertions.com/) was [introduced](https://github.com/damianh/Thinktecture.IdentityServer.v3/commit/eb022bb1972126737e98010a2166323f081991e1#diff-6dc850505d19afb750d9ceee45f65006L492).
6. Using FluentAssertions to assert exceptions, [including ones thrown from an async method](https://github.com/damianh/Thinktecture.IdentityServer.v3/commit/382eb9b160b26602cde49b759db83fef6b8773c7#diff-754dd2cd7d8ba0399c79f0d406b25fbaL132).

That's pretty much it.

One thing that I'm not happy about is the mixture of xunit's `Assert.` and FluentAssertion's `.Should()`. For consistency's sake, I suggest moving all assertions to FluentAssertion. I personally use it for all my stuff, it's nice. Agree?