Update dynamic types of collection values when operations return
subcollections.
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.
replaced isSubtypeOf implementation by a more OO-ish design, using ITypeVisitor to load a Subtype class dynamically for any specific type class. Inspired by the object algebra design
Removed dead constructor
Added public constructor