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.
In which case, either allow the setter to set the scale to null or force the constructor to supply a non-null colorScale