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 old 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.

> 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.