Refactored - remove events.

Using only Rx - because yes.
Added a changed method that polls for changes.
Use read only to read pin once.
Refactored, fixed stuff and things.
Test code edited.