Introduce contextual error reporter.

The contextual error reporter tries to improve on
the deepest error reporter by using heuristics to
find the most relevant error and provide more context.