Initial command validation DSL and implementation

This adds a DSL for command validation, along with an implementation covering
the most basic validation needs.  This is obviously incomplete, but serves to
replace a number of current command validations.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>