Performance counter can hang

This commit attempts to deal with the issues raised by users that when performance counter are newed up can hang the process.
This seem to occur mostly when running NServiceBus in IISExpress 8.

We are now doing the performance counter check (counter.CounterType) in a timed bombed thread that if it doesn't return within 2 seconds we mark the counter as not "healthy".

Took this opportunity to also refactor the performance code to centralise it all in the PerformanceCounterHelper class.

Hopefully this fixes #2047 
How do I cancel a hang `Task` ?