Modified the LongPollingTransport to handle asynchronous reads appropriately

#1536
Modified the ThreadSafeInvoker to be a class instead of a struct

- Within the LongPollingTransport it was passing the ThreadSafeInvoker
around and as it was passed it was consistently copied.  Therefore
changing it to a class results in it being passed by reference.

#1536
Re-factored LongPolling transport to utilize a PollingRequestHandler.

- This new setup moves the state machine into the LongPollingTransport and the actual network polling logic into the PollingRequestHandler