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:

   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