Switch to ButtonCallback to allow a-la-carte callback method implementation and convenience getters for currently selected indices

> ButtonCallback

Cleans up some of the logic for different list types. Will break existing users if they use the original interfaces via "implements", but I left some stubbed replacements for the original interfaces with a deprecation warning to allow existing anonymous class instances to still work and ease the transition. That should cover ~95% of users, since that's the conventional way to set dialog listeners in the builder. The idea is that rather than having a different callback type for each possible combination of buttons, you allow the user to override and implement them a-la-cart. This allows them to use the same callback type for all cases, and doesn't require them to stub empty methods if they don't want to implement them (such as when you want "cancel" to just dismiss the dialog via autodismiss). The updated sample shows this.

> Convenience methods

Nice for the situation where a user wants to do some processing based on the selected index(es) when, say, a button is clicked or cancel/dismiss is called.