Changed ServiceLocator so that it no longer implements ServiceRegistry.
Added ServiceRegistry.getAll(class).
jmock -> spock
Some initial detangling of the service registry hierarchies.

- Added DefaultServiceRegistry.addProvider() which accepts a bean that can have factory and decorator methods, similar to the service registry subclass itself.
- Inject dependencies into factory methods via parameters.
Changed ToolingGlobalScopeServices so that it is a provider bean, rather than a DefaultServiceRegistry subclass.
Moved Upload from the core to the plugins project.
ivy project depends on core-impl project.
Improved error messages on failure to create a service.
A bit more detangling of build scoped services:

- Changed PluginServiceRegistry to allow a plugin to provide build scoped services
- Use this to provide DependencyManagementServices instance instead of treating as a special in core's BuildScopeServices.
- Provide IvyContextManager as a global service.
Improved diagnostics in DefaultServiceRegistry when things go wrong, including detection of dependency cycles.
Converted TaskExecutionServices so that it no longer extends DefaultServiceRegistry.
Converted DaemonRegistryServices so that it no longer extends DefaultServiceRegistry.
Minor tweak to unit tests.