Added Plugin::onError() to handle plugin exceptions

I called it Error instead of Exception because some class names might therefore end in "Exception" and lead to confusion that they are subclasses of \Exception.

This change calls the Plugin::onError() method when an exception is thrown from a plugin command execution, event execution or a plugin task execution. This enables plugins to have features like auto-reporting exceptions to their authors or create other custom handlers.