Improved the splitting mechanism

Now the splitter understand the concept of `kind`. Items of the same kind are grouped together, whereas items of different kinds go in different groups, even if their weight would be lower than the maximum weight.
This is used in the companion PR on the engine, to split on the ruptures per tectonic region type.

The tests are green: https://ci2.openquake.org/job/zdevel_oq-commonlib/60/

NB: I have also added a manual check of uniqueness for source IDs in parse_source_model, until we understand why the NRML validator is not working.