A button library that handles multi-clicks, long clicks and click-and-hold