Early draft

I'm not suggesting that we merge any of this but a PR makes it easier to discuss.
We could also move this logic into the `commandFromURI` method, which would return a validated command and a list of errors, similarly to as you've mentioned above. 

And yes, I think `commandFromURI` could return a subclass or a class that extends a BanditoCommand class that has common methods for validation. Of course this would require that the CommandExecutor would accept covariant classes.