Add in HorizontalLegend.

Lists entries side-by-side in the available width, after which the
entries wrap onto the next row. If an entry is too wide it is
truncated. If there are too many entries some rows will not be shown.

Close #755.
Although, you could reference `Legend.LEGEND_ROW_CLASS` and not redfine. when you later rename this to `legend` for replacement, it will silently work
that said the duplication is super minor so i dont really mind