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

As per #1022, this (and all others here) will need to be `#include "py/lexer.h"`.  This is because there may exist "lexer.h" in some other library/component of the system and it'll be used instead of the uPy one (or vice-versa).  More explicitly, consider having 2 compilers from 2 separate projects invoked from the same .c file:
```C
#include "py/compile.h"
#include "some-othe-fancy-language/compile.h"

... code which compiles using uPy or the other language depending on some runtime switch ...
```
The above will work ok, but only if "py/compile.h" includes "py/lexer.h".  If it includes "lexer.h" then which lexer is it?