validate_with_model: ignore unknown keys in ignore

When the input contains unknown keys, but those keys are listed in
ignore, ignore them.
Make attempts not nullabe with a default of zero

This makes more sense as a default value: When a new task is created,
the number of attempts is not unknown or not applicapable (NULL), it
simply zero.
Fix to_schema for JSONList, JSONDict
Attempts can be equal to zero
Add relationship unpacking for tasks
Use NULL for unset ram_warning, ram_max

The code used to use the magic value-1 to signal unset values here,
even though SQL offers NULL for just that.
Remove unnecessary columns from Job
Add a title to jobs
Start jobs API: Job submitting implemented
Remove auto-increasing attempts from mixins

Since Job no longer has an attempts column, we cannot increase attempts
from WorkStateChangedMixin. Instead, we increase it in Task directly.
Adapt job model tests to changes in the model