Add test that `-[RACMulticastConnection connect]` isn’t racy
Fix race condition when connecting to a multicast connection

Every connect caller gets the disposable now
Add missing import
Remove the lock when connecting

Using an atomic compare and swap we can determine whether the caller should connect to source signal.
Use a serial disposable created at initialisation time so that connection is non blocking and connection can always return a disposable to callers, even if we aren’t connected yet.
Simplify the race condition test

This is the test from @kastiglione with the addition of a semaphore. Using the semaphore we ensure that the disposable is nil because of the bug we’re testing rather than nil because the block enqueued to the scheduler hasn’t run yet.
Swap `willNot` with `notTo` because the semaphore prior waits
Replace the semaphore test with a condition lock

This allows stepped execution of the test and doesn’t introduce a racy test to test a race condition
Test connect race with dispatch group and atomic flag
Rearrange atomic checks to remove race
Semaphores revealed
Remove atomic flag
Remove Complete state lock

Use `will` so that the tests can timeout rather than deadlock
Improve documentation around the `hasConnected` variable
Revert "Remove atomic flag"

As pointed out by @keithduncan, the wait/signal calls need to be balanced,
which was removed by this commit.

This reverts commit 6d4f595c33728915e3a76ff7638a4bc48b699e35.
Merge branch 'multicast-connect-race' of github.com:ReactiveCocoa/ReactiveCocoa into multicast-connect-race-test

Conflicts:
	ReactiveCocoaFramework/ReactiveCocoaTests/RACMulticastConnectionSpec.m
Add comments
Return back to unconditional signalling

This may cause the semaphore to not get released, but a small leak is
acceptable for tests.
Move `hasConnected` property to an instance variable

Add the `volatile` qualifier
Merge pull request #861 from ReactiveCocoa/multicast-connect-race-test

Test connect race with semaphore and atomic flag
Merge pull request #856 from ReactiveCocoa/multicast-connect-race

Fix multicast connect race