Extend gui system to use common code

move hover, input, and value codes into common base classes
add item that lets controls define the system they belong to so that
system can hook into any input events they may have.
Add fancy new GUI classes to build