Give readProcess' more sensible error messages.

Also a bunch of refactoring for GhcModError