Make splitAll return a Sections object

Because we also want to know where a string was split
we return a Sections object instead of a list of all sections.
The section object contains all newly created sections and
provides access to split points through the getSplitPointsOnly
method. To get all sections you call getAll.
Add container for leafs and nodes

 - when changeTo is called on a node wrapper it becomes a leaf
 - when splitAll is called on a leaf wrapper and new sections
   are created the leaf becomes a node,
   encapsulating the new sections