[WIP] Refactoring to support 2.0

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | no
| Fixed tickets | #82, #83, #202
| License       | MIT
| Doc PR        | todo

While updating to 2.0, I also tried to make the code cleaner and easier to understand. Since this will be released as CmfMenuBundle 2.0, we can have BC breaks in it. This is kind of the last change to make things really better.

Todo
---

* [ ] Create functional tests for PublishWorkflow listeners
* [ ] Create custom Loader to support PublishWorkflow
* [ ] Create a tag in the CoreBundle to support decorating services (which is support by Sf 2.5)
* [ ] Update SE
* [ ] Update sandbox
* [ ] Update cmf website
* [ ] Update docs
this is an important BC break to note in the changelog