Brutally improve list relations.

* Rename `ListRelationsTests` to `ListRelationTests` (yes, `AllRascalTests` is updated as well)
* Fix a type error in `ListRelation::invert` (`rel` instead of `lrel`)
* Fix a type error in `ListRelation::rangeR` (`&T2` instead of `&T1``; arguable, could be a subtype, but now more correct than it was)
* Refactor the code in `ListRelation.rsc`
* Add hundreds of test cases to `ListRelationTests`
* Adjust some definitions in `ListRelation` to make all tests pass
* `groupDomainByRange` and `groupRangeByDomain` now return a list, not a set
* Add `toMap` to `ListRelaton` (with corresponding test cases, of course)

The main problem is that `lrel` is supposed to be a relation and behave like a relation, except *also* preserving the order of tuples it comprises. Yes, the implementation behind it is `list`-based, but that is not a good excuse for returning tons of duplicate tuples for something like `complement([<1,1,1,1,2>,<1,1,1,2,1>])`.

If you disagree, please use the test suite to express how you think a “list relation” should behave.

NB: If by any chance you had some code that heavily relied on inconsistent behaviour of lrels and now it’s broken, a quick fix would be to replace `squeeze` in `ListRelation.rsc` with `id` and to use old groupDomainByRange & groupRangeByDomain. I’ve checked superficially and could not find any code *in this repo* that would be broken by this commit.