Making all 'inner' objects readonly and making constructors private/protected.
Alternatively they could be made internal but we probably don't want to expose
them to anything outside this library as I assume there will be an entrypoint for
all of them.
Added constructors matching those on the System.IO classes where applicable
Merge pull request #4 from pmacn/develop

Fixing a few small issues with the last PR