Adding schemas for representing challenges.

Adding some missing "var"s in db.js.
Adjusting challenge route to take a mongo object id.
Redesign of the challenge route and view.

- The route now uses the challenges ObjectId from mongo in the url
- The directory tree structure in the view is generated from the
  information in the database
Reworking challenge route to use workers.
Using evironment variables in config file for use on heroku.
Removing zmq dependency for heroku testing.
SUCCESS: enqueing workers and recieving a response over rabbitmq now works.
Adding basic route for challenge creation.
Starting on view for challenge creation.
Adding client side js for creating challenges.
Adding ajax and associated route for challenge creation.
Checking that stuff exists before we check it's length in the challenge view.
Adding description field to create challenge.
Making file lists scroll in create challenge view.
Starting to migrate to docker with rabbitmq.
Simplifying db schema for challenge states.
Adding rev to challenge schema.
Updating frontend to work with new challenge schema.

- FIXME: the code to generate file trees in the challenge view will not
  work with subdirectories and is only a temporary fix.
Adding filed for challenge instructions in create challenge view.

Also adding placeholder text to the input fields.
Trying to rewrite routes with nested functions.