Add the MenuGenerator and refactor the provider using Laravel semantic.

In fact, the complete code-base was not following the Laravel philosophy.