Fix `razor-admin` when run from different directory

If the directory where a user runs the `razor-admin` command
contains its own Gemfile, that Gemfile was being used instead
of razor-server's. This script will now change directories into
the razor-server directory in code.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-356
Asynchronous execution of hooks

Hooks could potentially be long-running. Previously, hooks
were run sequentially, meaning the hook must complete
before the original event can show as completed. That means
that e.g. the delete-node command would not finish/return
until all hooks for that event have completed.

Hooks will be executed sequentially on their own singleton
queue, and arguments (node, hook config, policy) will be
cached and then reloaded if necessary prior to running the
hook.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-370