Framework parallel tests, stage 1

Added LevelOfParallelismAttribute, ParallelizableAttribute, ParallelScope

LevelOfParallelismAttribute indicates number of workers to be used to run parallelizable tests in an MTA. Additional workers are created beyond this to parallelizable tests in the STA (1) and to run non-parallelizable tests in both apartment types (2).

Separate queues are used for parallelizable and non-parallelizable fixtures in either an MTA or the STA.

Queues and workers are orgainized into WorkShifts, which group together work that can be run during the same time period

Added tests for various attributes.

Fixed build for all supported runtimes, including Silverlight 5.0 and Compact Framework.

Parallelism is not supported in NUnitLite, but could be at least for desktop platforms. This is a decision that needs some discussion.

Since this is a completely new feature, running tests in a new way, we need a design review as well as a code review. See https://github.com/nunit/dev/wiki/Framework-Parallel-Test-Execution for an overview of the design. This pull request covers all steps through step  6 of the implementation plan shown.