Adding EnumeratedPath early workings

- Still very much a WIP
Refactoring in progress

- Moved path manipulators to static helpers
- In progress moving QueryBuilder methods to Factory
- Renamed to MaterializedPath
More refactoring and implementation of Node interface
Misc. bug fixes

- Fixed incremented path generator
- Fixed parent_id not being set
- Fixed temporary hack of making _getValue and _setValue public
Fixes moveAddSibling to wrap nodes
Implements first/last child/sibling

- Adds transaction support
Using pattern specific HierarchicalManagers now

- Managers now created from HieararchicalManagerFactory using classname
- Manager has ClassMetadata access now
Removing unintentional file
Moved root node methods to Manager
Reorganized Node interface visually
Added delete support
Added bulk deletion support via QueryBuilder
Cosmetic - Strips leading _ from protected properties
Adds method to check for tree errors
Fixes an error when a node has no ancestors
Change ParentId to Parent
Typo fix
Fixing bug when adding an empty and clause in query factory
Fixing bug with incorrect arguments to getSortedPosQueryBuilder
Fix some docblocks and add some typehints