FileStream Updates/bugfixes, IDisposable added, Stream updated to use IDisposable

- FileStream now uses a RandomAccessFile as it's backend.
- All streams updated to use IDisposable rather than override close()
- Made exceptions a little clearer when attempting to perform a
read/write on a stream that is read only/write only.