Rebase pull request #265 from lodejard/dev

Rebased #265 on top of latest aspnet/dev
Just checked .NET reference source and
```c#
new FileStream(
  result.CacheFileName,
  FileMode.Open,
  FileAccess.Read,
  FileShare.Read | FileShare.Delete,
  8192 /*bufferSize*/,
  FileOptions.Asynchronous);
```
is equivalent to
```c#
new FileStream(
  result.CacheFileName,
  FileMode.Open,
  FileAccess.Read,
  FileShare.Read | FileShare.Delete,
  bufferSize: 8192,
  useAsync: true);
```
I'll make them consistent.