Change related to issue #21.
If element to be inserted is already present, return current instance.
Adding IntelliJ IDEA project.
Reference implementation of List data type exposed as functions.

Further, reference implementation now reuses the optimised numeric representations.
Reference implementation of Set data type exposed as functions.

* Plus, refactorings between abstract collection classes and implementations.
* Also introduced inference of dynamic Set type based on collection size (empty or not) and element type.
Sharing code for handling keyword parameters of constructors.
Reference implementation of Map data type exposed as functions.
Temporary fix of the static vs dynamic type issue related to the
collections in the reference implementation.
Fix of the static vs dynamic type issue related to the tuples in the
reference implementation.
Implemented the Node methods in the reference implementation related to
keyword parameter semantics.
Porting replace() function from pdb.fast implementation.

Further, reimplementing delete() functions with iterators to avoid forwarding calls to IListWriter.delete().
Including static labels in temporary fix.
Simplifying writers.
Remove the dependency of Set.delete() to SetWriter.delete().
Source clean-up.
Removal of duplicate ListRelationWriter in pdb.fast.
Removing IListWriter.delete() + source clean-up.
Experimenting with removal of IRelation.

* For the time the reference implementation is removed.
* Set / Relation unified as Set => 1x data structure, 2x possible dynamic types (PDB Set or PDB Relation).
* Relational operations extracted as static functions.
Linking relational operations to a view on a set (with a partial function).

* Correct naming of project operation (used to be select previously).
* Adding a relational view on Set.
Adding arity() query to IRelationalAlgebra.