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.