Added Exception inheritance checking

Pull request for bbraithwaite/MSTestExtensions#3, criticisms, concerns, and suggestions happily accepted

Implemented the change as a required argument to the main `ExceptionAssert.Throws<T>`, and as an optional argument to all of the extension methods. All optional uses default to `.Inherits` so that the old behavior is observed, and an exception type such as `ArgumentNullException` is accepted when an `ArgumentException` was expected.

Following the use of `ExceptionMessageCompareOptions`, use of `.None` throws an exception during type checking such that one cannot provide an "empty" value while also explicitly providing a value.

For users who inherited `BaseClass` and use the extension methods, these changes will not break anything. Users manually calling `ExceptionAssert.Throws<T>` will receive a build error indicating that the new argument must be provided. This could potentially be solved by either providing it as an optional argument, supplying `.Inherits` as the default, or by just adding XML documentation to the enum's values so users know what each is for.