Updated teensy to build with latest

Refactored some stmhal files which are shared with teensy.

Many of the files from stmhal were usable by introducing the notion of a HAL_H header file.

For stmhal, mpconfigport.h sets the following:
```C
#define HAL_H           <stm32f4xx_hal.h>
#define PIN_DEFS_PORT_H "pin_defs_stmhal.h"
```

and various stmhal .c files were changed to #include HAL_H

For the teensy, HAL_H maps to 
```C
#define HAL_H           "teensy_hal.h"
#define PIN_DEFS_PORT_H "pin_defs_teensy.h"
```

I think that I could get rid of the PIN_DEFS_PORT_H by using #include <pin_defs.h> and have stmhal and teensy both provide a single pin_defs.h

I'm putting this PR forward as a proposal to see if the changes in stmhal are acceptable. Otherwise, I'll need to basically copy the following files from stmhal and make a single line change:

gccollect.c
pin.c
pin_named_pins.c
pybstdio.h
pyexec.c
readline.c

I think that probaby gets messy pretty quickly. I think that the python bindings could definitely be shared. UARTs are often similar enough that it is possible to share the definitions (the linux 8560 driver covers an awful lot of UART chips).

But when you go to add FIFO support (and I feel that's inevitable - I know I'll personally want that), then things start to diverge (since you wind up having to use DMA on the stm32 since there is no H FIFO).

I see no reasons why this file couldn't be split, into a python bindings portion, and a chip-specific portion.