3.0 Add button widget

As part of #2267 this set of changes implements a button element, and renames text to basic, as that more accurately describes what it does. I think other than the datetime widget this is the last required widget. My hope is that @burzum has the datetime widget completed soon.

My next step is to start creating a few form context objects. Theese objects will provide an interface that formhelper will use to access entity values, introspect schema data and determine if a value is required. I was planning on building an adapter for the built in orm and simple arrays. I think having this separation is a big step in reducing and containing the coupling between formhelper and the orm.