Add revisions to user

* current (set after clone/pull)
* tested (set after the test has been run)
Make User#pull more robust

It now just clones when the repository doesn't exist out of whatever
reasons.
Refactor test handling

* tests are run out of request (preferably by a cron job/rake task)
* results and scores are stored in database