Improve Error.to_string for `No_directory_entry
fat: add a 'list' command, use the Error.to_string function
test: check that the filenames from listdir are in the correct format

Internally there's a lot of UTF-16, but we want to use UTF-8 throughout.
This test currently fails because UTF-16 is leaking.
test: check that mkdir foo; create bar; listdir foo returns ["bar"]
listdir: convert UTF-16 filenames back to UTF-8 (well actually ASCII)

This needs to be replaced with a careful use of the UUTF library.
fat: list: add some sanity checks and enhance the output
test: check that reads beyond the end of a file return short
test: check various non-aligned reads
fat: add 'cat' subcommand to dump a named file to stdout
When reading a file, clip the length to 0

This avoids us reading off the end of a file, and doing nonsensical
things like 'Cstruct.sub s (-ve offset)...' which leads to trouble
Correct the calculation of the 'end sector' and 'preceeding bytes'
Add SectorMap.to_string for better debugging
Merge pull request #14 from djs55/list

Fix reading files and directories