SI-8538 Test or example for Source.report

It's possible to supply an arbitrary `Positioner` to a
custom `Source` that wants to override `report`.

This obviates the need to expose the deprecated `Position` class.

The default report method consumes the underlying iterator, which
is not desirable and produces unexpected results.

The expected outcome is that no one uses or extends the legacy
position handling code.

In 2.12, use a Reporter instead. Probably the source should be a `PositionReporter` so that a `Reporter` knows what position to report?

Review by @adriaanm , "a mild-mannered reporter"