Allow for more extendability

While protected properties are used through-out the library, the factory class for some unknown (good) reason to me uses privates, making it hard to extend. Had to almost re-write everything for [using with CakePHP](https://github.com/gourmet/knp-menu/blob/master/src/MenuFactory.php).