Provide ability to add RunListeners using SPI (#80)

When is hasNext expected to throw an exception?