Open for discussion: CollapsedParseTree with new underlying ParseTree data structure

I implemented a new class CollapsedParseTree and a new data structure around it, which could also in the future replace the old ParseTree implementation. It is very similar to the current implementation in many aspects, especially the interface.

Collapsed versions of parse trees reduce the complexity of the tree by collapsing phrases into single notes and prepositions to edges. This can be helpful many potential applications based on parse tree patterns.
 
However, this implementation offers also mutable and immutable ParseTree implementations which helps making some functions much faster (e.g., everything concerning children of a vertex in an immutable tree).