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.