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
Merge pull request #3099 from ermontgo/dev

Allow HubConnections to be used in Crank