Break required adapter methods into interfaces

Allows users to use library in conjunction with other concrete adapter implementations
Add ability to disable edit mode 
Add listener for enter/exit edit mode
Hook up local click listeners at init time instead of when the user adds their own click handlers