Provide ability to add RunListeners using SPI (#80)

Just to be safe, maybe we should make this an AtomicBoolean so we can graurentee that the listeners loaded from the ServiceLoader are not added more than once. The alternative is to use double-checked locking.