Add a check method to handle static failures

The parse method on the hopper module has been removed in favour of a
check method, which performs both a parse and runs the dialect checker
if it exists. The outcome is either an object with information on where
the error occurred (if such information has been provided by the
original error) or null if no error occurs. The internal checking logic
has been simplified, and a spelling mistake on the nodeIfAbsent method
resolved.

Parse Errors have been renamed to Parse Failures, to match with the
naming scheme of other errors.