Lots of changes to better match .NET
Stream async read/write updates, NetworkStream constructors updated, IAsyncResult AsyncWaitHandle added, MemoryStream allocation bug fix

- Async reads and writes should behave just like .NET
- Added remaining constructors to NetworkStream
- Added AsyncWaitHandle to IAsyncResult
- MemoryStream now resets the length of the stream to 0 when allocating
space using the constructor.
- Added canTimeout property to Stream class
- NetworkStream now supports read timeout