pymake: use absolute paths for targets internally

If a Target is defined using a relative path, normalize it
to be relative to the makefile.py that defined it. Also
make targets specified on the command line relative to the
makefile used. Since now the "name" of the target is defined
by its path, change the pymake_targets() api to return a list
of targets.

Additionally update makefile.py to follow new pymake_targets() API.
makefile: use absolute path when iterating over example dirs

Since makefile.py can be run from anywhere, make sure to use absolute
paths when calling os.listdir().
pymake: make CPPIncludes() work for relative paths

Interpret relative paths in CPPIncludes() as relative to
module it was defined in.

Also use absolute path of source directory in C(XX)FLAGS.
libmn: rename untyped_port to port<void *>
pymake: implement ExternalTarget()