Fixed all the mess I made earlier, sorry...

...and make the code more logical :
- no allocation in ReadStream, first parameter is data only and allow
definition of a view on the passed buffer (string or typed arrays)
- no array copy from MemoryStream constructor