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 
Not sure if it really matters much at that point and because we set `counter = null;` later on, pretty sure GC will dispose of it