More refactoring: remove newTask methods from ServiceContext, move a few more methods from Transaction to TransactionController, create a TestService that uses the new ServiceBuilder API in the way it is intended to.
Move "implements TaskFactory" from Transaction to TransactionImpl, and internally (org.jboss.msc._private) replace all references to Transaction by TransactionImpl.
Remove TestService and make TestService2 the new TestService. As a consequence, all tests are now using the new API format (service receives service builder as a constructor parameter, retrieves service context from it, and adds dependencies himself, thus keeping the resulting Dependency objects)
Refactor ParentDependency: remove Dependent, and DependencyDecorator; make parent service context enforce parent is up whenever a service is installed; service builder installs the service directly regardless of a parent dependency; parent dependency is just a DependencyImpl that is responsible for removing the child once parent is going to stop.
Add machinery to support external transaction coordinators (initial implementation)