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.
let's make them lowercase, i agree
could make a class to encapsulate them like `Alignment.left` but i think thats needlessly pedantic