Prevent bad commands from being accepted by Auryn.

fixes #22 to prevent the edge cases in https://github.com/rdlowrey/Auryn/issues/22

I think the code below is correct, however it definitely needs a review.

Particularly is that the correct exception type, or should it be either BuilderException or BadArgumentException?

cheers
Dan