Cancel the thread to avoid recursive SIGINTs.

When killing the application using Ctrl-C on the command line,
you usually saw the UARTs "stopped" twice.  The signal handler
would execute the avr_terminate() code, which would try to stop
the UART pty threads by issuing a SIGINT to the thread. This
would cause the signal handler to be invoked again, causing
avr_terminate() to run again.

There are really two ways to fix the problem. First, we can just
cancel the thread instead of sending a signal to it. Otherwise,
we can filter out the SIGINT once we have received it. That change
requires a change to simavr, where canceling the thread required
a change to drumfish, so I chose to cancel the thread.
build: use warnings when building drumfish

Enabled a slew of warnings that I typically use in my projects (minus
ones that really got mad with simavr headers) and fixed the warnings
that were exposed by them.
m1128rfa1: free flash before loading new flash

Ensure the flash buffer is freed before assigning to it.
Don't try to boot if no firmware is loaded