More DIContainer refactoring

As proposed on dev list

1. Uses property get instead of get()
1. Adds setClassNames() to set trivial factories, uses in service provider
1. Adds more to service provider tests
1. Adds separate DIContainer instance available via elgg_get_dic()