Add save/restore_irq

Factored irq functions into a separate file.
Add support for pyb.micros() by using the systick timer.

I also removed trailing spaces from modpyb.c which affected a couple
of lines technically not part of this patch.

Tested using: https://github.com/dhylands/upy-examples/blob/master/micros_test.py

which eventually fails due to wraparound issues (I could fix the test to compensate
but didn't bother)
stmhal: Use MP_OBJ_NEW_SMALL_INT directly in pyb.micros/millis.

Also some whitespace cleanup.