Adding support for parallel execution of examples

These changes add handling of an additional parameter "--parallel-test" that takes a number as input.  This number will then be used to limit execution of examples to the specified number of parallel threads.  To accomplish this the ExampleGroups each are started in a sub-thread which can then start up to the specified number of example threads running in parallel.  A global maximum is used to prevent going over the specified number and execution of additional threads will wait until an available thread is free for cases where the maximum number of parallel threads are in use.

Additionally, these changes ensure that Before / After Suite and Before / After All calls are executed only once per expected grouping, but that Before / After Each calls are executed before and after each example as part of the parallel thread.

The advantage of this change is that it fully supports all platforms supported by rspec (unlike parallel_tests gem which does not work correctly on all Windows systems) and the output remains serially reported so you avoid the need to stitch together test reports at the completion of testing (as can be required with solutions like parallel_tests and prspec gems where parallel execution is actually split between multiple instances of rspec).