Paths must not be empty.

This must be done in resolve since Parrot changes a path to an absolute path by
prepending the CWD of the process.

Fixes #288.
Have Parrot report EINVAL on negative offsets.

Suchandra Thapa reported that Parrot gets in an infinite loop when lseek is
passed a negative offset. This is due to Parrot setting the offset to a
negative value and then returning the offset, which is interpreted as an error.
For this case, Parrot interprets certain negative ranges as an EINTR by
default, so it retries forever.

The solution is to check for negative offsets and return EINVAL as appropriate.

Fixes #297.