prevent directory traversals below _base_ (fixes #2):

- unify read and size into Fs_common
- introduce check_filename which uses realpath to ensure that requested name is below base
- guard all file system accesses with check_filename
Well, I think once mirage/ocaml-cohttp#150 is addressed, we shouldn't need these checks at this layer unless you want to stop traversals for other services or you really want the new symlink semantics (like that Apache option).

If we do decide to put these measures at this layer, then I think, yes, an lwt job would be necessary. It probably makes the most sense to contribute that job back to lwt, as well, rather than duplicating headers/types.

Regardless, `ocaml-crunch` should probably gain (at least) an issue regarding the portability and errno issues.