JSON import: support ignoring empty fields

Add a new feature to the from-json conversion of records: the ability to ignore fields containing empty values and add them as fields-to-delete if they belong to a root record. Furthermore, empty lists and empty nested records can be ignored.

Of course, this is optional, on the import cli it can be activated with a CLI option, in the API it is by using a subclass of the default RecordReader.

This feature is very useful when JSON import files are generated by some tool, in which case it is much simpler for the tool to have a fixed json structure in which it replaces some placeholders, rather than having to adjust the json structure (adding json props depending on whether a field has a value, adding fields-to-delete entries) for each record.

Had to do quite some refactoring to the RecordReader to make this possible. It allows now for much more customisations during the deserialization, of which the already existing LinkTransformer was a very specific case.

On JsonImport, replaced the wildgrowing number of load methods with an ImportSettings object (pre 2.2 methods are kept for compatibility).

Properties for which there are native types in json, like numbers and booleans, can now also be defined as strings, which is useful in combination with the ignore-empty-fields option (since you can't have an empty number or boolean).