The interface has one method returning the `FileInfo` and a flag telling if `Lstat` was called or not.
```go
type Lstater interface {
LstatIfPossible(name string) (os.FileInfo, bool, error)
}
```
`Lstat` is currently only supported by the `OsFs`, but since that `Fs` can be used in others, they will also support it by proxy.
But not always, so hence this optional interface.
The interface is in this commit implemented for:
* BasePathFs
* OsFs
* CopyOnWriteFs
* ReadOnlyFs
Fixes#75
This is a BREAKING CHANGE to the Walk and ReadDir functions that
existed prior to this branch addition. This change is not done without
considerable thought.
Having FS come first is done for two reasons.
1: It's more idiomatic go
2: It's more logical. It allows the function signature to read easier
and flow from the broadest value to the most narrow.
For example, WriteReader would read..
writeReader on this fs, to this path (on that fs),
with this data (at that path, on that fs).
I believe that when the first two were implemented it wasn't at all
obvious that the order wasn't correct, nevertheless, permitting a
lot of new functions defined in an incorrect or inconsistent order
seems like the worst option.
It was decided that a breaking change today would be best, even if it
was mildly painful at the present.