Rework makefiles. Add proper dependency checking.

The biggest difference is that object files now go into  directory inside build based on where they came from.

I updated unix, unix-cpy, stm, and teensy

py/mkenv.mk primarily sets up variables and only lists a single target called all
py/mkrules.mk primarily contains rules