[WIP] Refactoring for linkType

Somethings to note:

* Should we put the "allowEmptyItems" option in the root menu node? (pending the  PR related to that)
* At the moment this refactoring is "BC". But that adds a lot of overhead test wise. I am tempted to remove the BC.
* The "valid" link tryes are defined by the factory. Using constants in the `MenuNode` would make extending the link types difficult.