Avoid hard-coding 400 exception response in commands

Sinatra provides a standard mechanism for mapping exceptions into HTTP
results, which easily replaces the custom handling in our command helper.

The final result is identical in most cases, but no longer eats exceptions
that should result in, eg, a 403 error code rather than a 400 error code.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Create a new security manager when configuration changes

If the Razor security configuration file path changes, we should create a new
security manager.  This avoids situations where we fail to notice a
configuration change because we cached the previous version of this object,
and especially the mutable state it contains.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Implement soft and hard IPMI reset for nodes

This adds a command that queues a reset operation to the target node, sent via
the IPMI system, and executes it as soon as possible.  This is an imperative
command, mostly expected to be used to, eg, trigger a node to reboot and run
through the PXE system.

The most likely case to trigger this is when the node will be caught be
another policy after the reboot and some additional action taken on it; for
example, after unbinding, a reboot is a reasonable way to get the new
policy applied.

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