button: Add ability to set max width for text

Close #528