* Feature parity between Badger 2040 and Tufty 2040.
* Add ulab to Tufty 2040.
* Don't include modules_py modules for boards that don't use/need them.
* Tweak modules_py.cmake so modules can be copied by parent CMake files.
* Simplify copy_module function to avoid repetition.
Due to quirks with how QSTRs are passed, conditionally including a function is difficult.
Instead, always include "get_shift_state" but throw a RuntimeError if its use is invalid (no shift register).