Automatic Namespace generation

Added static method to DefaultPluginManager class to generate automatically the namespaces array.

What do you think about wrap all this together in a ::create() method instead of passing these arguments (cache and namespaces) in every call. I know, we are breaking in that case the dependency injection, but in 90% of the cases, that will be the usage.
How about?

```php
  /**
   * Generates the array of available namespaces for plugins.
   *
   * @return \ArrayObject
   *   The generated array of namespaces
   */
  public static function getNamespaces() {
    $namespaces = &drupal_static(__FUNCTION__);
    if (isset($namespaces)) {
      return new \ArrayObject($namespaces);
    }
    if ($cache = cache_get('plugin_namespaces')) {
      $namespaces = $cache->data;
      return new \ArrayObject($namespaces);
    }
    $names = array();
    foreach (module_list() as $module) {
      $names['Drupal\\' . $module] = drupal_get_path('module', $module) . '/src';
    }
    $namespaces = $names;
    cache_set('plugin_namespaces', $namespaces);
    return new \ArrayObject($namespaces);
  }
```

This way we:
  - Avoid calling drupal static set for every enabled module.
  - Return early:
    - and decrease indentation levels for readability.
    - reduce cyclomatic complexity.
  - Cache native arrays only avoiding the woes of serializing typed objects.