Preliminary lexer additions
Shifted lexer-related classes into new package
Changed predicates to take dates and date ranges, and handle operators
Lexer deals with whitespace in qualifiers; keywords accepted by parser
Fixed basic tests
Improved whitespace handling
Fixed remaining tests
Tests and fixes for dates
Added tests for date ranges
Loosened criteria for date MM and DD format
Updated equals and hashCode for predicates
Implemented range operators
Changed date ranges so strictness is kept track of by the creator instead of the user
Fixed lexer tokenising range operators wrongly; added tests for range operators
Fixed bugs with date ranges
Date range tests
Added author predicate
Replaced predicate content fields with Optional values
Implemented type predicate
Merge branch 'master' into parser