More DIContainer refactoring

As proposed on dev list

1. Uses property get instead of get()
1. Adds ~~setClassNames()~~ setClassName() 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()~~