Added TPL version

Uses PLINQ to sort, then Task Parallel Library's Parallel.For to split
up the array into a number of parts equal to the cpu count.