Early draft

I'm not suggesting that we merge any of this but a PR makes it easier to discuss.
I agree, a list of errors would be better. I also think it would be better to use child classes for commands which could inherit common validation methods. In that draft, I'll return a list of errors.