Adds basic support for overriding templates

When using this widget I was having trouble customizing the layout of each element. Overriding CSS is fine for more basic cases, but once I need to customize the markup (or even adding custom elements to each element), being traped in the default templates makes it much harder

So I thought of doing this directly on this widget, which is what this PR is for
it adds 3 options to the constructor, where I can override each template that is being used in the widget

I'm not really sure you guys want something like this on this widget, or if it's just intended to be used as it is. There are also a few problems, which I tried to explain in the documentation, but would require a larger work on the view code to get sorted out