Refactoring the process of driver instances creation to use a new DriverProvider interface. DefaultDriverProvider wraps the current logic -- creating instances using reflection. This is a step to implement ability to load additional providers using ServiceLoader that can add new providers or override existing ones.
Implement ability to load driver providers using ServiceLoader. A user can add new providers or override existing ones. To use this ability a user should:

1) Create one or several classes that implement DriverProvider interface and have no-args constructor. The method getProvidedCapabilities should return capabilities to match against. The method newInstance should implement custom driver creation logic.
2) Create a file META-INF/services/org.openqa.selenium.remote.server.DriverProvider
and list your classes in this file (one full class name per line).
3) Start selenium server (or a node grid) with the classpath that includes your custom classes and META-INF directory that lists them.
4) Starting a node set -browser option with the parameters that correspont the capabilities returned by getProvidedCapabilities method of a provider.
Also I'm going to add a wiki page that describes this new feature in more details.