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.
Based on the above if statement, it seems this._scale could never be null...