(maint) Make DiagnosticFormatter handle diagnostics without source pos.

The problem was that DiagnosticFormatter has only been tested with the
parser (which always includes a source position even if source pos has
not information). When dealing with other forms of diagnostics there may
not be a source pos.

This fixes the formatter to not query the detailed source_pos unless it
is available.
Add a reuseable issue reporter

This issue reporter emits errors and warnings in a configurable way.
Add missing require of issue reporter in pops.rb
Improve error messages and add defaults

This makes the hiera2 bindings producer not give up when hierarchy or
backends are missing (it now uses default values).

Improves error messages by providing details when bindings are
conflicting.

Makes use of the IssueReporter to output collected diagnostics.

Fixes loading of hiera2 backends