Refactor handling of bot commands

Instead of accessing shared state from IRC callbacks,
parse the command and forward the message on a channel
to the main goroutine for handling
Add a fake arm impl for testing purposes when the real one is not connected
Restructure connection setup to avoid adding callbacks after connecting