Allow creating observables from `AbstractButton`s.
Refactored implementation out from SwingObservable, as there will
probably be lots more methods in the long run.
Added some api documentation.