Simplify match using descructuring

Idiomatic? Rather than using conditionals to test the type of error, we
can descructure the IoResult and use a different arm for the type of
error we need to handle specifically.
Borrow the file reference in tail_file

Idiomatic? The previous version took ownership of the file. As far as I
can tell the more idiomatic way to write this is to borrow the reverence
to the file rather than take ownership.