Initial changes to support sending to multiple signals in one go.

- Added Signals everywhere there was Signal
- Added MultipleSignalProxy which is a client proxy for sending to multiple signals.
- Redesigned how we pass state to proxies.
- Cleaned up duplication for the HubConnectionContext by introducing HubConnectionContextBase
- Added Clients and Groups methods to IHubConnectionContext
- Added overload to Groups.Send that takes multiple group names.
- Fixed group manager tests.
- Added hub tests for new API surface.
- Added tests for persistent connection.

#1789