Allow HubConnections to be used in Crank

- Created IConnectionFactory as injection point for developers to
customize how a Connection is created
- Created DefaultConnectionFactory to retain behavior of creating a
regular Connection
- Modified Crank client to compose the IConnectionFactory dependency
using MEF. If no candidate is supplied by an external assembly, the
client will automatically use the DefaultConnectionFactory

#3000
Added IUntrackedDisposable and blacklisted in DefaultDependencyResolver.

- DefaultDependencyResolver will now no longer retain instances to IDisposables that implement the special marker interface IUntrackedDisposable.

#3208
Addressed code review comments in test cases.
Merge pull request #3286 from BrandonLWhite/bug-3208

Fixed memory leak of IHub instances. This resolves #3208.  DefaultDepend...
Fix Code Analysis error
Merge pull request #3099 from ermontgo/dev

Allow HubConnections to be used in Crank
Handle transport failures occurring in the connecting state

- In the event of any transport error prior to the init message,
  the transport should immediately stop and allow the connection to
  fall back to another transport.
- In the event of any transport error during the start request,
  the entire connection should immediately be stopped