Implement read system call

The read system call is by far the harder of the two. It includes directory
reads and that includes union mount reads, with all corner cases included.

The test is:
9open #Z 0
get the returned fd -- in this case, usually 0
Try to read 22 bytes @ 0
9read 0 22 0
Fails. But, doesn't panic or do anything nasty. The waserror stuff is working
very well.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>