feat vertical alignment for the button widget

If a span is really needed, I think it should only be there in case `state.verticalAlign` is defined.