Added more button timing features

Get time since last change
Callback with time held
Refactoring
Docs updates