Improved violin plots to allow for custom KDEs

I changed the violin plot to allow the use of custom-made KDE estimation functions.

The user can either provide functions estimating the KDE on the set of points estimated by the violin plot or provide a set of points used to plot.

All is done through a new arguments: ``kdes``. If the argument is not present, the behavior of the function is as before.