Merge both legends' functionalities.

Right now this PR is extending only `HorizontalLegend` to cover `Legend` functionality. 

`Legend` class gonna be removed and `HorizontalLegend -> Legend`.

Close #1068.
It can be null from constructor, but if it's null it's gonna crash.