'Return a mapping of
import-name -> (path, subdir-import-name, is-dir-import)
for all possible importable "things" in the given dir. Each part
is explained below.
The "import-name" is the string that you\'d use in the particular
language\'s import statement:
import statement        import-name     path
Python:     import foo              foo             foo.py
Perl:       use Foo;                Foo             Foo.pm
Ruby:       require \'foo\'           foo             foo.rb
PHP:        require("foo.php")      foo.php         foo.php
require("foo.inc")      foo.inc         foo.inc
For the simple case of a directly imported file in this dir, the
"subdir-import-name" isn\'t relevant so None is used:
Python:     "foo": ("foo.py", None, ...)
Perl:       "Foo": ("Foo.pm", None, ...)
Ruby:       "foo": ("foo.rb", None, ...)
PHP:        "foo.php": ("foo.php", None, ...)
"foo.inc": ("foo.inc", None, ...)
In addition to importable files in the given dir, this function
must also provide the link to imports in *sub-directories*.  In
Python a special "__init__.py" in subdirs is actually imported
when a dir is specified. Here the "subdir-import-name" becomes
relevant:
Python:     "bar": ("bar/__init__.py", "__init__", False)
In most languages there isn\'t a special file to indicate this.
However the dir name *can* appear as part of an import
statement. The "is-dir-import" boolean is used to indicate that
the "import-name" can be used as part of a multi-level import
statement:
Perl:       "Bar": (None, None, True)
Ruby:       "bar": (None, None, True)
PHP:        "bar": (None, None, True)
Some of these latter languages occasionally have an importable
file *and* a sub-directory of the same name.
Perl:       LWP.pm and LWP/... in the stdlib
Ruby:       shell.rb and shell/... in the stdlib
In these cases:
Perl:       "LWP": ("LWP.pm", None, True)
Ruby:       "shell": ("shell.rb", None, True)'

def find_importables_in_dir(self, dir):

    raise NotImplementedError('find_importables_in_dir:    virtual    method')
