Queuing messages when scaleout stream is in initial state

#2767
Made changes as per code review feedback

#2767
Made changes as per code review feedback

#2767
Addressed code review comments
Cleaned up queuing changes in scale-out:
- Moved QueuingBehavior enum to root namespace
- Updated doc comments
- Changed logic in ScaleoutStream.Send when waiting on drain task to be more careful RE null refs
Updated scale-out stream unit tests:
- Added some more tests to verify behavior of queuing behavior