refactor(errors): move error calls and output to error class

This is the start of a better wrapper to handle errors. It also
prints error text to stderr instead of stdout.
Could we keep `-1` here for this PR, and add `WatchCommandError` in another one?
We may need some discuss about the new error type.