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
Added unit tests
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.
Update version in hub.js in sample project
Merge branch 'release' into dev
Fixed the Hub Auth portion of the Sample project

- By calling MapSignalR later we can ensure SignalR runs after auth
  middleware and HttpApplication.AuthenticateRequest.

#3152
GoneWithARace - prevent a client failure caused by a race

When building Url we checked whether connection.ConnectionToken, connection.MessageId and connection.GroupsToken were null before appending them to the Url. However there was a small window in which these properties could be set to null in a different thread if a Disconnect happened causing the client to fail with the ArgumentNullException. Assigning the property value to a local variable and using the variable throughout the method prevents from the failure.

Fixes #3211, #3212
OutOfBodyExperience - removing IFrame from body

For foreverFrame transport SignalR appended the iframe as the last child of the body node. However some libraries (e.g. jQuery UI) move nodes inside the body which causes the iframe to reload which results in sending a "connect" request even though the transport has already been started. Because we cleaned up some things after sending the original "connect" request the second "connect" request may cause "Object expected" exceptions. The fix is to move the iframe outside the document body node so it is less likely to be touched/moved by the user's code.

Fixes #2795
Merge branch 'bug-2795' into dev
Initiate /start request after a transport is selected in the JS client

- This is how the .NET client already behaves

#3104
Remove unnecessary Trace property from MessageBus
fix for bug #3166

Changed ObservableDbOperation to look for Updates instead of Inserts
based on changes to send.sql
Merge branch 'release' into dev
Update to JSON.NET 6.0.4
Fix JSON.NET reference in Silverlight samples
Merge branch 'release' into dev

Conflicts:
	nuspecs/Microsoft.AspNet.SignalR.Client.nuspec
	samples/Microsoft.AspNet.SelfHost.Samples/packages.config
	samples/Microsoft.AspNet.SignalR.LoadTestHarness/packages.config
	samples/Microsoft.AspNet.SignalR.Samples/packages.config
	src/Microsoft.AspNet.SignalR.Client.Portable/packages.config
	src/Microsoft.AspNet.SignalR.Core/packages.config
	src/Microsoft.AspNet.SignalR.Crank/packages.config
	tests/Microsoft.AspNet.SignalR.Tests.Common/packages.config
Update JSON.NET to 6.0.4 in .NET client for wpa81
Fixing WP8 sample references after the update of Json.Net