Add notion of a Submission Preprocessor, to mutate submissions before applying plagiarism detection.

Intended uses include removing given code which would be present in all assignments, or
applying simple preprocessing to tokens (e.g. lowercasing all letters).

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Added two preprocessors (Lower casing submissions for character and string tokens)

Also add test cases for PreprocessSubmissions.

Small change to equals() for Submissions, now checks token lists as well.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>