Completely change ExceptionProvider

Make it a final class instead of an interface -- quite a change. Rewrite
SimpleExceptionProvider and modify tests appropriately.

The class has no constructor, instead it only has a static factory method taking
an exception class as an argument.