Refactored `__buildNavigation` and added target attribute for extension links

Sorry again a PR that contains two different things, but adding a new feature always comes with some kind of refactor if you want to do things right.

So I split the `__buildNavigation` method into 3 separate and smaller ones. This makes the code easier to read and understand IMHO.

Secondly, I added the possibility for extension to customize the `target` attributes of links. We use small extensions in order to customize the menu for customers (like a link to their analytics account) and this would prevent having to write javascript for this feature.

The extension class doc have been updated too. Hope you all like it.