improved error handling (fixes #2, improves #6)

The commit message in the previous PR referred to the wrong issue.

This was initially a fix for #2 but it contains fixes for some issues with #6. The issue with #6 is that the CSS file is touched before it is determined that its path is writable, resulting in a fatal error. Since we can detect write errors (along with compilation errors) in compileFile() I've moved the write check there. The touch() is unnecessary since lessc automatically creates the file if it doesn't exist.

Regarding #2, this change captures the actual error from lessc and strips the shell color codes from the output to make it readable.