Issue #12: allow constraints on thrown exceptions.
Issue #12: move spec examples to own class to separate concepts.
Issue #12: Include text indicating when the expected type of exception is thrown but the additional constraint is not satisfied.
Break out each assertion into its own test

By using a test case source, and building up an Action object to run for
each test case, each test case can display as a separate test in NUnit.
Reporting can be done more easily, as the NUnit reporting is now fairly
complete, although individual tests don't display very well in the tree
view. It also makes it possible to filter out the tests on the Spec
class itself, thus making full test runs against the SpecEasy solution
possible. If we were to remove the ability to check exceptions in a
delegate, and just have an expected exception type, we could also use the
NUnit expected exception handling.

Note that this does have some interesting side effects. First of all,
because tests are completely built up in advance, test order is less tied
to order in the code, and so should not be relied on. Additionally, test
code that is not in a Given/When/Then will get run during test
construction, but not during test execution. So member variables that are
reset in test code outside of a given/when/then no longer work. The tests
that relied on this behavior have been fixed in this change, but other code
may rely on it as well, and would need to be changed accordingly. Overall,
this is a good change, as it more clearly delineates code executed during
tests and code executed to create the test cases.
Fixes issue #20: Use method overload for exception expectation rather than an option parameter to avoid breaking existing code that refers to the method via a method group.
missed a bit of the merge
Support for async
Added support for async test specs as well as thens, givens, etc.
Created Unit Test for Async Methods
Updated nuspec and assembly info for 2.0.0 build.