add new classes for handeling reading a writing directly to and form the file system

this adds the ability to read and write to and from the filesystem directly keeping the memory footprint low
The way getLines() is implemented (and called via __toString()) here could be dangerous. On larger files this is an instant a memory limit error. Is there any way we could make this require an output parameter instead? If someone wants the response in an array, pass in an array, else pass in SplFileObject

```
public function getLines($output) {
    // write to output, one line at a time
    if ($output instanceof \SplFileOutput) {
        // ...
    } elseif (is_array($output)) {
        // ...
    } else {
        throw new \InvalidArgumentException("Requires array or SplFileObject");
    }
}
```

usage:
```
$output = new \SplFileObject("php://stdout"); // etc.
$file->getLines($output);
```