Remove Text interface from TextContainer

Allow a more focused api to be provided. We can now replace
the splitAt method in the TextContainer by a findAll method
which only exposes split points.
Replace Container.splitAll with findAll
Rename TextContainer to TextTree

The TextContainer represents either a leaf or a node
so whenever you call a method of the TextContainer the
call will likely visit many objects that are layed out
in a tree like fashion.
Make Node package private
Delete unusable TextTree

The TextTree was supposed to wrap all Text elements of the tree,
but because Node objects already wrap other nodes and leafs this
would result in a rewrite of the entire code base. Also the
transformation of Text can be handeled by the nodes and leafs
themself in way more straightforward than the TextTree could.