fix(injector): invoke config blocks for module after all providers

This change ensures that a module's config blocks are always invoked after all of its providers are registered.

NOTE: I'm not entirely sure if this is desirable yet, because the point mentioned in the BREAKING CHANGE section below may actually be something which is desirable. However, I do feel it is probably better to always invoke config blocks for a single module after all of its providers. The config blocks should not play a role in how providers are registered, in my own opinion.

BREAKING CHANGE:

Previously, config blocks would be able to control behaviour of provider registration, due to being invoked prior to provider registration. Now, provider registration always occurs prior to configuration for a given module, and therefore config blocks are not able to have any control over a providers 
registration.

Example:

Previously, the following:

```js
   angular.module('foo', [])
    .provider('$rootProvider', function() {
      this.$get = function() { ... }
    })
    .config(function($rootProvider) {
      $rootProvider.dependentMode = "B";
    })
    .provider('$dependentProvider', function($rootProvider) {
      if ($rootProvider.dependentMode === "A") {
        this.$get = function() {
          // Special mode!
        }
      } else {
        this.$get = function() {
          // something else
        }
      }
    });
```

would have "worked", meaning behaviour of the config block between the registration of "$rootProvider" and "$dependentProvider" would have actually accomplished something and changed the behaviour of the app. This is no longer possible within a single module.

Fixes #7139