Setting up ansible configuration to configure a WW server
Add Vagrant configuration
Some file permissions and config stuff for ansible
Configure apache in ansible
Move Vagrantfile up a level
Ansible updates:

- Switch to patched version of webwork
- Include courses.dist file
- Use handlers to only restart apache if necessary
- Create webwork databases/users
- Fix python dependencies
Move deleted column to correct table
Some more ansible setup.
Some useful setup scripts
Switch to using a requirements.txt file for Python requirements.
Bump Vagrant VM to 2GB RAM (apache likes RAM).
Add PhantomJS and Selenium to Ansible for scripting/tests.
Fix an error in sockjs teacher_handler.py
Scripts for simulating a student attempting homeworks, as well as multiple parallel students.
Script to automate creating a bunch of students in WebWork.
Create some SQLAlchemy ORM model classes.

There's some metaprogramming mumbo jumbo in src/databases/base.py to
handle the fact that in WebWork, courses each have their own tables with
the course name in the table name for every table related to WebWork.
Update hint model to match schema.
Create Alembic migration setup, add a test migration.

The tricky bit here is that since each course has its own tables, when
running Alembic tasks you need to provide the course name on the command
line, like 'alembic -x course_name=UCSD_CSE101 upgrade head'. Each
course also keeps track of its own Alembic migration state in its own
version table (see env.py).
Add course name check to migration script template.
Add approved field to Hint model.