flash: add erase command for JLink

Will only work with newer Jlink software (>4.69)
usr: fix up adding user programs

User programs (invoked via shell) now must simply use
DEFINE_APP(func_name) to make that function a shell
command.
usr: convert user programs to use DEFINE_APP
Merge branch 'master' of github.com:prattmic/F4OS
Conditionally build printk functions based on USART availability

TODO: Make printk print out of stderr, not always USART.
Add Kconfig options for stdout/stderr

Since they are set globally with Kconfig options, chip.c can be removed,
and default resources can be defined in resource.c.
Remove old comment
Add history command to shell
Add atoi() string conversion function
getchar: shell func to read character values