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.
Not that I'm not a fan of renaming where applicable, but why was this variable made instead of just reused?  If the variable name was initially confusing, maybe we should change the inherent variable name