Lots of little tweaks.

Button class #43, closes #33, and closes #28 via #36.