We introduce a new `SourceLocation` interface, which allows to bridge
the gap between Langkit's and Truffle's types, and use that as a basis
for diagnostics.
We remove the `Locatable` interface, instead storing `Nodes` directly,
using the `AbstractTruffleException` interface.
We get rid of `DummyLocation`, instead using nodes & abstract accessors.
We also unify the interface for `DiagnosticEmitter`. As a consequence,
the code for emitting diagnostics is mostly shared at this stage.
Unifying the emission of rule violations is the last missing step.