Bug 374: Feature request: module resolution extension point.

This adds a "pydev_python_module_resolver" extension point, which
allows plug-ins to define how to resolve Python modules and get
the module structure with respect to a single project.

The current default behavior of PythonPathHelper does a recursive tree
walk across the PYTHONPATH to collect a project's modules. For
organizations that need to support large, heterogeneous codebases, the
PYTHONPATH may span across tens of thousands of Java, C++ , and Python
files.  In this scenario, PyDev can not effective walk the entire
PYTHONPATH without becoming overwhelmed.

The extension point allows plugins to override the default behavior
and explicitly define what modules are part of a project.  It adds an
IPythonModuleResolver interface for finding project structure and
resolving modules.  It threads IProject through the callers of
PythonPathHelper.getModulesFoundStructure() to provide the project
context.  Finally, this adds a test plugin to explicitly check the
behavior of the introduced extension point.

Change-Id: I75d68354c58956c64796d5ef91d4a3530bf8f73c
Merged feature to allow third party plugins to resolve modules.
Merge branch 'dannyyoo-PYDEV-374' into development