Add command validation

refs #9
Changes
------
* コマンドのバリデーションをDSLっぽく書けるtraitを追加

TODO
------
* helpコマンドとバリデーションが重複してる感があるのでなんとかしてまとめる