Add a new errors module and use it in Response::from_file

The new errors module will hold all common error types and wrappers used
within Iron or for consumption in downstream middleware. This removes the
need for many re-implementations of common errors like FileError, which is
added in this commit.

The signature of Response::from_file has been changed to return
Result<Response, FileError> instead of IoResult<Response>, since the former
is much easier to consume within a handler.

Since the signature of a public constructor has been changed, this is a:

[breaking-change]