Major Backport of Button code

I recently did a major overhaul of Railcraft's button code for some
upcoming features. Figured I backport it to Buildcraft as well.

Texture information was abstracted into an easily swapped object.
Multi-Buttons can now have different textures for each state.
Added tool tip support for all buttons (with mouse over delay!).
Added textures and states for a "Lock" Multi-Button.
Greatly reduced code duplication.
Some cosmetic fixes for the last commit

Damn tabs!
Merge remote-tracking branch 'up/master'