Candidate code for a ServiceProvider API

Not quite there yet.
Add a static inner class and exception for bundle loading

Made package-visible for testing purposes. Guava's @VisibleForTesting would have
been nice here, but I don't want to use Guava (yet?), so...