Don't close passed in FileStream handles in constructor (dotnet/coreclr#12253)
* Don't close passed in FileStream handles in constructor
As the finalizer will run when throwing we need to be
careful to make sure we don't put the passed-in handle
in the member field until we're sure we've succeeeded.
Additionally we need to make sure any wrapping SafeHandle
we create on a passed in IntPtr isn't collected.
* Move platform specific assertion and add comment.
* Comment- fix mistake in CanSeekCore
Commit migrated from https://github.com/dotnet/coreclr/commit/
8a8bda14a618b14264cb85c012e097b3e01992e9