implemented dynamic filename resolution by the grader
Fixed bug in Picobot parsing code

The Picobot parser previously only allowed one-digit state
numbers. This has been fixed.
Merge branch 'devel' of github.com:abreen/socrates into devel
"Baby's first commit" needed a little love

I'm just joshin', Chris.
Removed outdated info. from readme
socrates treats 'ws' as an alias to 'websubmit'
Added 'due' attribute to criteria files
Removed 'missing_files.txt' code completely
Added late deduction support
A huge code overhaul

The biggest change: for custom file types and custom test types
(subclasses of BaseFile and BaseTest), the 'from_json' methods have
been removed in favor of passing a dictionary into their constructors.
This removed a lot of redundant and confusing code.

The generate mode was officially removed.

For criteria files, the 'assignment_name' and 'course_name' attributes
are no longer expected. The 'short_name' attribute has been renamed to
simply 'name', and the 'due' attribute has been made required. All JSON
support has been removed in favor of YAML.

In grading mode, headers are no longer written to the grade files, and
grade file names have their group in addition to the 'name' attribute
from the criteria file.

For WebSubmit mode, the final grade file no longer skips the first four
lines. It doesn't write a header to the file either.
Removed a reference to JSON
Removed debugging print statements
BaseFile no longer automatically finds and creates tests

This caused a weird duplicates bug where the PythonFile constructor and
BaseFile constructor were both creating tests for files.
Fixed bug in PicobotFile
Changed code that handles incorrectly named files

The shutil.copystat() function is not supported on our target system,
so this has been replaced with a simple rename.
Merge branch 'devel' of github.com:abreen/socrates into devel
Fixed small bug in PythonFile
BaseFile now creates tests list; PlainFile finds test types
Fixed PythonFile bug
Fixed bug related to YAML parsing of review test deduction modes