Initial checkin with STM HAL

This compiles and links, but hasn't been tested on a board
yet and even if it was run, it doesn't currently do anything.

Directory mapping from STM Hal

Drivers/STM32F4xx_HAL_Driver/Inc --> hal/inc
Drivers/STM32F4xx_HAL_Driver/Src --> hal/src
Drivers/CMSIS/Include --> cmsis/inc
Drivers/CMSIS/Device/ST/STM32F4xx/Include --> cmsis/devinc
Middlewares/ST/STM32_USB_Device_Library --> usbdev
Middlewares/ST/STM32_USB_Host_Library --> usbhost
Middlewares/Third_Party/FatFs --> fatfs