Several long-standing bug fixes for buttons / button lists.

* Button.cs:
  Converted to UIElement.
  More documentation.
  Added Highlighted property.
  Added SetHighlighted() method.

* ButtonList.cs:
  Added MouseMoved handler.
  Added ValidateSelected() method.

* TextField.cs:
  Converted to use MouseRect() extension method.

* UIElement.cs:
  Added virtual GlobalBounds property.

* Extensions.cs:
  Added MouseRect() method.