Updated log message for keep alive monitoring

Resolves #1084
Make it possible to use Forever Frame when requested.

- Instead of failing due to window.EventSource is supported, a log message sent that better transport methods are available.
Changed reconnecting to disconnecting
This pull should close #1057

Changed back to the initial check of window.EventSource, but with different log message
Changed log message for not supporting FF when SSE is supported.
Update message loops sample to detect all duplicate messages then stop connection when new message is not duplicate instead of running forever
Update version to 2.1.2
Fix SQL duplicate messages issue:
- Ensure the state is reset at the beginning of the receive loop
- Added more tracing to detect unexpected states in the ObservableDbOperation state machine
- #2988
Merge pull request #2849 from DNIDNL/bug-1057

Change log message when Forever Frame is skipped in browsers that support SSE.
Merge pull request #2843 from thecodejunkie/keep-alive-error-message-update

JS client keep alive starting log message update
DumpingDisconnect.Net

Removing handling Disconnect message in the .NET Client as the server no longer sends Disconnect messages.
DumpingDisconnect.JS

Removing handling Disconnect message in the .JS client as the server no longer sends Disconnect messages.
TransportAbortHandlerIsMovingOn - removing transport abort handler
(We wish him luck in /dev/null)

Fixes workitems #3067 and #3102
Update Katana (Microsoft.Owin) dependencies from 2.0.1 to 2.1.0
Prevent MessageBus from hanging forever in the second call to Dispose
Added unit tests
Transport!YouAreFinished! - generalizing AbortSent flag

The transport is not in a usable state if either the abort request is sent or the transport was disposed. When in this state the transport should no longer be used. Before it was guarded by the AbortSent flag but the abort request does not necessarily have to be sent so the AbortSent was replaced with a new Finished flag which is set to true if either the Abort method was called or the transport was disposed.
Welcome?BackTransportAbortHandler - reverting TransportAbortHandler removal

We found that removing TransportAbortHandler caused a few issues and there might be more we did not find. Reverting change to avoid breaks.
Send ACKs to the connection waiting on the ACK not the acker itself

- These ACKs are used to verify that commands published to the
  bus have been received and processed (e.g. group commands).
- Previously, ACKs only succeeded if the waiter and acker were on
  the same machine and/or the acker happened to be the waiter.

#3037
SmallBigData - allowing messages longer than 32766 characters

Fixes work item #3040

Non .NET Framework 4 clients used the FormUrlEncodedContent class to escape messages sent by clients. This limited the length of the message to 32766 characters. For longer the client would fail with the invalid uri exception saying "The Uri string is too long". The messages are not actually Uris so we don't care about the length. The fix is to use a custom UrlEncoder we already have which is functionally equivalent to Uri.EscapeDataString() but will not throw if message is longer than 32766 characters.