Added the sample form as a file.
Fixed a bug in the JavaScript: stored expressions had scoping problems and weren't able to access the identifiers.
Added a form loader to load forms from files.
Added a better exception message when the form file isn't found or isn't readable.
Added checker for integer ranges
Updated TODO
Refactored lang::qls::analysis::Messages
Keywords (in lang::ql::(ql|qls)::Keywords) are now automatically inferred based on given syntax definition.
And more refactoring.
Refactoring again.
Merge branch 'kemi' of github.com:software-engineering-amsterdam/sea-of-ql into kemi
Refactored lang::qls::analysis::SemanticChecker
Merge branch 'kemi' of https://github.com/software-engineering-amsterdam/sea-of-ql into kemi
Refactored lang::qls::analysis::StyleAttrChecker
Refactored lang::qls::analysis::WidgetTypeChecker
Fixed imports of extended modules in ast::Keyword

Strangely enough, this only results in errors when running the unit
tests a second time after changing something in those Keyword modules.
Apperently, the modules are otherwise cached.
Extracted getKeywords from lang::rascal::grammar::definition::Keywords (more)

It seems unintended to import that module, as it is part of the Rascal
parser. Also, importing it is dead slow for some reason; this is way
faster.
Whoopsie
Hmm, can't seem to replicate the bug with a minimal testcase. Weird. Any clues Jimi?
Merge branch 'kemi' of github.com:software-engineering-amsterdam/sea-of-ql into kemi