Add unit tests for SocketAwaitable.

Fix SocketAwaitable and SocketAwaiter classes to pass all the tests.
Add unit tests for SocketEx.

Fix SocketAwaiter class to pass all the tests.
Add a thread-safe pool for SocketAwaitables.
Add "is disposed" check to SocketAwaitable.
Add a thread-safe buffer class.
Increase assembly version to 1.0.
Update readme.
Set SocketAwaiter.IsCompleted when it completes.
Add IsCompleted check in SocketEx for fast-fail.
Add unit tests for SocketAwaiter.
Make IsCompleted check thread-safe.

IsCompleted check in @2329a9284a4d02e2e80d62b11410d8441bbc9fa9 didn't
lock the awaiter so concurrent access to it may escape this fail-fast
check.

Add an internal SyncRoot to SocketAwaiter and lock on it while checking
IsCompleted.
Add context synchronization to SocketAwaitable.

SocketAwaitable: Add public ShouldCaptureContext property for users to
signal whether they want context capturing.

SocketAwaiter:
* Add internal SyncContext property to allow getting and setting the
captured SynchronizationContext.

* Remove the setter of IsCompleted property and add a Complete method
that sets the isCompleted field to false and nullifies the SyncContext.

* Make both delegates that invoke the continuation to check
awaitable.ShouldCaptureContext first and use the captured context if it
is true. Also, make these delegates call the new Complete method to set
isCompleted to false and nullify the captured synchronization context.

SocketEx.OperateAsync:
* Capture the current context if the awaitable
argument's ShouldCaptureContext property is set to true.

* Replace a.IsCompleted = true parts to a.Complete().
Merge branch 'syncc' into next
Expose more SocketAsyncEventArgs features.

Make SocketAwaitable expose these SocketAsyncEventArgs properties:
* ConnectByNameError
* DisconnectReuseSocket
* LastOperation
Make SocketAwaitable.Buffer access thread-safe.

Make getters and setters of both SocketAwaitable.Buffer and
SocketAwaitable.Transferred properties thread-safe by locking on
syncRoot.

Add a warning in SocketAwaitable.Buffer's documentation that specifies
checking SocketAwaitable.Transferred property after setting the buffer
may provide unreliable results.
Increase assembly version to 1.1.
Update readme.

Add detailed analysis and code samples of all the project classes.
Merge branch 'release-1.1'

Conflicts:
	src/Dawn.SocketAwaitable.Tests/SocketAwaitableTests.cs
	src/Dawn.SocketAwaitable.Tests/SocketExTests.cs
	src/Dawn.SocketAwaitable/Properties/AssemblyInfo.cs
	src/Dawn.SocketAwaitable/SocketAwaitable.cs
	src/Dawn.SocketAwaitable/SocketAwaiter.cs