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.
Why can't we just gate at calculateLayoutInfo