Make sure MsmqWorkerAvailabilityManager is thread safe on .NET 4 in NSB 3.3.9

MsmqWorkerAvailabilityManager.ClearAvailabilityForWorker() throws "System.InvalidOperationException: Property ResponseQueue was not retrieved when receiving the message. Ensure that the PropertyFilter is set correctly" if you put some stress on it with NSB 3.3.9 on .NET 4+.

The problem is that Microsoft made almost everything on MessageQueue NOT thread safe between .NET 3.5 and .NET 4. 

3.5 docu: http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue(v=vs.90).aspx vs
4 docu: http://msdn.microsoft.com/en-us/library/system.messaging.messagequeue(v=vs.100).aspx

Those changes by Microsoft makes the MsmqWorkerAvailabilityManager implementation in 3.3.9 not safe, as it needs locking to work. The proposed fix, which fixes the repro, is basically to revert  @7de28f8f1dbfdf39a810800b841b0df49f02aac6. Bad luck on that one, @andreasohlund. :)

Check out repro, available [here](https://github.com/janovesk/nsb-msmqdotnet4bug).

Did you see the implementation of ReceiveBy(), @johnsimons ?
http://referencesource.microsoft.com/#System.Messaging/NetFx20/System.Messaging/System/Messaging/MessageQueue.cs#25800

                // Use cursor (and not MessageEnumerator) to navigate the queue because enumerator implementation can be incorrect
                // in multithreaded scenarios (see bug 329311)

Guess how GetAllMessages() is implemented.. http://referencesource.microsoft.com/#System.Messaging/NetFx20/System.Messaging/System/Messaging/MessageQueue.cs#1856

```C#
public Message[] GetAllMessages()
        {
            ArrayList messageList = new ArrayList();
            MessageEnumerator messages = GetMessageEnumerator2();
            while (messages.MoveNext())
            {
                Message message = (Message)messages.Current;
                messageList.Add(message);
            }
 
            Message[] resultMessages = new Message[messageList.Count];
            messageList.CopyTo(resultMessages, 0);
            return resultMessages;
        }