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>
Realize node name in the database

We previously had a fairly universal concept of a node "name" through the
code, but it was only constructed in the application logic, not in
the database.

This means that various database level operations were simply impossible when
using the name, and that a complex set of deconstructions had to be used
through the codebase to deal with this.

Now, we simply have the column in the database, and use it.  This fixes that
non-uniform API, a win alone, but also paves the way for a future when users
can assign more meaningful names to nodes without violating the expectations
of the overall system.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Use object reference validation for node reinstall commands

This moves to using the validation DSL to pre-check the node is a valid
reference when we issue a node-reinstall command.  That avoids the need to
handle it in the code specifically.

This also changes the return code from 202 to 404 if you issue the command
against a node that does not exist, which seems reasonable as that is
ultimately a user intent failure: we can't do what they wanted, and they
presumably expected *something* to be reinstalled when they issued
the command.

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