Provide ability to add RunListeners using SPI (#80)

Perhaps a package-scoped class named `RunListenerList` or `RunListeners` that was injected into the `RunNotifier` via a package-scope constructor? We could move the code in `SafeNotifier.run()` into a method on `RunListenerList` that looked something like this:

    public void notifyListners(Notifier) {
        ...
    }

    public static class Notifier {
        public void notifyListener(RunListener listener);
    }