Unit tests and other asssorted stuff.

Hi Seth,

OK, so I've completed some of the work on the unit tests and while I'm not complete as yet I think what I have completed may be of value.  I've added two versions of the solution file (one for VS 2010 and one for VS 2008) and updated the project files.  I've completed a full set of tests for all the Actions, and fairly comprehensive set of integration tests for the RewriteEngine itself.

I used MSTest for the unit test framework, and verbose method names that describe the action, conditions, parameters and results, so that if (for instance) the method Execute_SetsStatusCode_ReturnsStopProcessing() on the NotImplementedActionTest class starts failing... you ought to know where to start looking ;)

I have pedantically used Arrange/Act/Assert for all the tests. And to help with actions that should throw an exception, I implemented an ExceptionAssert class (in the test/Assert directory) which works much like the Assert.Throws method in NUnit - of which there is no MSTest equivalent.

Rather than use a mocking framework like Moq ro whatever, I have implemented a few mocks under the test/Mocks directory.  Not all of the functionality available in the mocks is actually used, but I thought it might be good to implement a fairly complete suite of these so that anyone working on additional unit tests can just start using 'em.

Along the way, I made some slight mods to the main source.  Nothing major, just the usual pedantic shite that I usually do ;) except that I moved the XmlNodeExtensions class into the src/Extensions directory and added another ListExtensions class to replace some of the code that iterates over IRewriteCondition lists to find a match.  I also added a couple of extra XmlNode extensions, like GetIntegerAttribute.

I also uncovered a little bug whereby if you use processing=restart, it skips the first rule - which I fixed by implementing a recursive call instead of a loop.

What else...?  I reckon that's about it.  Suffice to say that the value I have extracted out of this project of yours over the years has far exceeded my own input into it, so it's nice to contribute a little something back.

Cheers,
Stu