button: add getText()/setText() methods (close #418)