Add @PreferenceChange
Refactor AbstractListenerHandler

So now it can be used for other types of listeners then View listeners.
For View listeners, a new subclass, AbstractViewListenerHandler is
created.
Implement PreferenceChangeHandler
Add @PreferenceClick
Implement PreferenceClickHandler
Add @AfterPreferences
Implement AfterPreferencesHandler
Add @PreferenceHeaders
Implement PreferenceHeadersHandler