Textboxwidget

I made a couple significant changes.
1) I dropped your logic for acceptable float characters.  Instead, the widget tries to coerce the text to a value using self.type.  self.type=float will produce floats in self.value.  self.value is only updated if self.type(text) succeeds (doesn't throw an exception).
2) I made the default type str, but provide a simple wrapper TextBoxFloat that emits floating point numbers.
3) I more closely follow the pattern in the other widgets.  I observer self.drawon, and have and use on_changed() to register observers of the widget.  observers are only called when self.value successfully changes.

The weird macosx callback issues are not my doing.  Those problems exist somewhere else in matplotlib.

It could use some tests, but I don't know how to fake interactive clicks and types.

IMO, this is ready for merging into mpl proper.