py: Move to guarded includes for compile.h and related headers.

For files in the py directory, "lexer.h" will always look in the directory containing the file which had the #include in it.

So if I #include "py/foo.h" and foo.h has #include "bar.h"  then bar.h will look in the directory containing foo.h to find it, before looking in the seatch path.

For headers not in the current directory, it uses the order of directories specified on the make command line.