fix alex and happy's build runner error parser

use stderr if it's not empty, previously it always picked stdout and the
error messages were being ignored. Also rewrote the error parser to
match "file:lineno: msg" and "file:lineno:colno: msg" formats with a
regex. The old could would throw exceptions in certian cases, causing
the error messages to be hidden.
run hlint with working dir set to project dir

This seems to be a more sensible choice than the file's directory and
allows HLint hint files to be specified on the project root.