Make use of a few new features in TinyGo:
* Functions and globals in header files are supported.
* Static functions are supported.
This allows us to remove workarounds specifically used for the lack of
support for static functions.
This SoftDevice is used by default on the BBC micro:bit v2 so it's a
good idea to add support here.
Unfortunately this SoftDevice does not support scanning and connecting
to other devices. This means that I unfortunately had to duplicate the
event handler. I managed to refactor most other code to avoid
duplicating much more. (This is when macros would have been useful in
Go...)