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.