Fixed up FakeFS::File.read and .binread to respect options
* FakeFS::File.read was ignoring the passed options completely!  The
  updated test suite checks a variety of scenarios, including specifying
  all the combinations of length and offset being present or not as
  well as passing in an options hash for open.  The updated code
  passes the test suite.
* FakeFS::File.binread wasn't actually doing a binary mode read!
  A test for this scenario was added, and the code was simplified
  now that FakeFS::File.read could be relied upon to implement the
  spec properly.  Note that the previous .binread would have failed
  a test where an offset was specified with a length of nil.