Generalizing parser

joebot2 no longer relies on the sentinel char '!' to denote commands