Hi Pete,
I'm a little concerned with the classloading policy in the CDI class :-)
The code strongly depends on Thread.currentThread().getContextClassLoader() which isn't always appropriate, for instance if you try to use it outside of Java EE platform it will not work as expected. Furthermore CDI providers are statically cached once for all, I'm not sure it will nicely work with multiple CDI applications. Maybe we can discuss about enhancing the CDI class to provide another "current()" method with a classloader parameter or a "CDI provider factory" parameter.
Also, as the "current()" method does not take parameters, CDI implementations will need to rely on some static discriminant like TCCL or something like that to find the CDI container of the current application which isn't always possible. Maybe we can discuss about providing another "current()" (or any other name) method with a discriminant parameter to target the right app.
I've just seen Stuart's pull request. It should work in a Java SE environment, but I'm not sure about modular environment.