On timeout, call the callback with an error

Previously timeouts were being treated as a critical error and therefore `process.exit()` was being called. This would prevent the Grunt task from ever failing. The fix is to make timeouts be non-critical, allowing the application to handle errors properly.