Issue #273 #274

* Implemented Votes and service to manage them
* Refactored cache methods. Placed in its own class
* Added eventDispatcher with comment and votes events
* Added eventListener for empty cache
* Tested component and bundle
IMO this class it totally private to `CommentManager` since it's only used in the method `getCommentVotes`. We have no need to pollute the `Entity` namespace with classes that only implement a specific algorithm (unless of course if it is reusable).
What if we add `nbUpVotes`, `nbDownVotes` and `nbVotes` to the `Comment` Entity and update those values by listening to `ElcodiCommentEvents::VOTE_UP` and `ElcodiCommentEvents::VOTE_DOWN` events?