Cleanup FileStorage

A set of cleanup changes, mainly to convince myself that it is thread safe and sufficiently robust...
That's not quite it... It's ok for ```result``` to be null, but if it's non-null, then ```ReadBinaryFile()``` **must** return true.

Maybe this would be clearer?

    if (result) {
      CHECK(util::ReadBinaryFile(data_file, result));
    }