[WIP] Refactoring for linkType

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no (not yet)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | todo

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.