Avoid empty error messages

This fixes a problem where `psc` and `docgen` throw errors while throwing errors. That is, if a compilation error occurs during `psc` for example, we emit an error using `new gutil.PluginError(PLUGIN, buffer.toString())`, but `buffer.toString()` is null, so we get this error:

```
Error: Missing error message
    at new PluginError (/Users/tom/code/purescript-d3-examples/node_modules/gulp-purescript/node_modules/gulp-util/lib/PluginError.js:53:28)
    at ChildProcess.<anonymous> (/Users/tom/code/purescript-d3-examples/node_modules/gulp-purescript/index.js:94:38)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:755:16)
    at Socket.<anonymous> (child_process.js:968:11)
    at Socket.emit (events.js:95:17)
    at Pipe.close (net.js:465:12)
```

which can't be handled and causes gulp to exit. This is especially annoying when trying to use `gulp watch`.

The fix makes `psc` and `docgen` do the same thing as `pscMake`; that is, give a static failure message.

@garyb I agree. I think we want to keep the `buffer`'s value in these cases. Maybe we should go with your suggestion. Does this work for you @pelotom?