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
@alch well, we cannot ensure that we will need more votes in another entity (product, for example), so this is why this value object is set as a public object.

If we add these three fields inside `Comment`, we are ensuring that entity `Comment` will always have votes, so this adds some complexity to some possible customization. This relation is `1 to *, unidirectional` so IMO the best approach is to treat vote management as a pluggable system.

What do you think?