[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
Yeah, I'm already creating an `UPGRADE-2.0.md` guide to explain things like this, since they aren't BC breaks introduced by the CmfMenuBundle, but they are usefull to know when you're using the CmfMenuBundle.