Add SQL scripts, data migration information
Add report.tex
Migration to MySQL

Add MySQL scripts and rewrite SCRIPTS.md migration guide.
Score view and custom patient selection by score.
Improve custom score and select valid sessions
Add AVG_SAP, AVG_DAP, average table, data for analysis ready
Database properties file, println and timer utility
Read db parameters, open/close connection, symptoms and records

Connection parameters are fixed for now, use the parameters read from databse.properties.
Records are asserted in the `positive` and `negative` structures (e.g. `positive(ID, AttributeName, AttributeValue)`).
Connection from database parameters, string concatenation function.
Add util comments
Edit view scripts for case sensitive schemas, update tutorial, add port forward for openshift
Classify record attributes, read database config file path, list min/max w/ null handling

Database config file path is read on startup, with default fallback to `database.properties`.
Implement min/max of lists with null values handling, ignore them.
Classification of record attributes with only positive examples (for now) into ranges.
Category classes are classified into unit ranges.
Number classes are classified into ranges of `|max-min|/10` dimension.
feat(entropy): calculate entropy of the whole list of examples or a subset

Add `example(Type, ID, Attribute, Value)`, new accessory function to iterate over all examples,
being them positives or negatives.
Add `entropy` predicate, calculate the entropy of a list of example IDs.
Add custom separator to the `println` predicate.
Implement partial information gain (values, attribute, range)

Draft of main information gain function.
fix(gain): partially fix instantiation issue

info_gain is still broken. Investigate the cause of the miscalculation with some simple example sets.
partial_info_gain is the most probable culprit.
info_gain fix, best_attribute selection, log function, list_append

Fix info_gain, optimize by selecting only the right IDs from the given list.
Implement best_attribute by looping over every info_gain.
Log with log_at multiple levels.
Implement list_append for appending any element to a list.
Implement is_in_range to abstract the range type in a predicate.
fix(learner): properly select and print maximum info gain
feat(util): format_ms to get string representation of milliseconds

Implement `format_ms`, format milliseconds into `[M]m [S]s [MS]ms`.
Use `format_ms` whenever printing times.
Use `log_X` to print log messages.

TODO: implement conditional level logging.
feat(log): implement log level filter

Fix db_param, positive, negative implicit definition.
feat(learner): use given attributes for best_attribute calculus