This reduces the memory overhead required to --exec a file (although
we will still have problems with big classes).
For now we have avoided matching "^def" since we need additional
handling for decorators!
This is a big change that break compatiblity with existing applications
*and* with existing installed versions of main.py.
When upgrading it is import to update main.py:
./tools/wasptool --upload wasp/main.py
This allows for an elegant iterative development approach where we upload
some code than then interact with it, for example:
wasptool --exec wasp/drivers/nrf_rtc.py --console
rtc = RTC(watch.rtc.counter)