'Register the given codeintel support module.
@param module_path {str} is the path to the support module.
@exception ImportError, CodeIntelError
This will import the given module path and call its top-level
`register` function passing it the Manager instance. That is
expected to callback to one or more of:
mgr.set_lang_info(...)
mgr.add_hooks_handler(...)'

def _register_module(self, module_path):

    module_canon_path = canonicalizePath(module_path)
    if (module_canon_path in self._registered_module_canon_paths):
        return
    (module_dir, module_name) = os.path.split(module_path)
    module_name = splitext(module_name)[0]
    module_full_name = ('codeintel2.' + module_name)
    if (module_full_name in sys.modules):
        module = sys.modules[module_full_name]
    else:
        iinfo = imp.find_module(module_name, [module_dir])
        module = imp.load_module(module_name, *iinfo)
        sys.modules[module_full_name] = module
        setattr(codeintel2, module_name, module)
    if hasattr(module, 'register'):
        log.debug("register    `%s'    support    module", module_path)
        try:
            module.register(self)
        except CodeIntelError as ex:
            log.warn("error    registering    `%s'    support    module:    %s", module_path, ex)
        except:
            log.exception("unexpected    error    registering    `%s'    support    module", module_path)
    self._registered_module_canon_paths.add(module_canon_path)
