Add support for Parameterized Tests

The It command now accepts an optional -TestCases parameter, which is a a collection of hashtables (technically, any IDictionary objects).
If provided, instead of executing the test script block once, it will be executed once for each element in the TestCases array, and the
dictionary will be splatted to the test block.  This means the test block must accept parameters for each of the hashtable's keys.

The NUnit XML output function will detect this condition and create a test-suite element of type ParameterizedTest.

Looking ahead to our discussion of plugging in languages, the new Invoke-Test helper function
accepts a script block which is responsible for displaying the test results, instead of being
hard-coded to use Write-PesterResult.  This will allow things like Gherkin to provide their
own output functions without duplication.  We'll need to do more of this type of change
throughout the code later.
Refactoring to allow more thorough testing of It command

For now, this is accomplished by moving the entire implementation of It to another function, and giving that function a parameter named $Pester.  Eventually, a cleaner approach will be to pass around a PesterState object as a parameter throughout the entire internal implementation of the code, but right now, too much of the code relies on being able to dynamically resolve a variable named $Pester, and it'll be easier to fix that situation from the bottom up.
Added more thorough tests of the It command

Or more specifically, the ItImpl command that does all of the work now.

May think of other ways to test this later, but it's already a vast improvement over what we had before.  (Some of the older tests may be obsolete now, will review those later.)
Added new parameter set for specifying export path / format

Will allow us to define other types of exports later on.  For now, the only option for format is LegacyNUnitXml, which matches the behavior of the existing -OutputXml parameter.

Next step is to tweak the NUnit format with a new, more compatible version (leaving the current output of LegacyNUnitXml alone for as long as we choose to support it.)
Refactored NUnit export function

Now separated into several smaller functions, making it easier to spot the paired calls to WriteStartElement() and WriteEndElement(), etc.  Will make editing easier as we start to tweak the code to support our current "legacy" format alongside the updated version.
Minor cleanup
Adding updated NUnit export format

Starting to implement the requests from #179 for output that is closer to what NUnit produces.
Added description tag to test-case elements in new NUnit export.
Parameter order in XML

When NUnitXml output is selected and parameter metadata is being automatically appended to test names, the values will now match the order that parameters are defined in the test script block (regardless of what type of dictionary / hashtable was used to splat them.)
Added test for previous commit
Whitespace cleanup
Merge pull request #220 from dlwyatt/ParameterizedTestsRebase

Parameterized tests, new NUnit export format