Switch to ButtonCallback to allow a-la-carte callback method implementation

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.
Add convenience methods for retrieving currently selected index(es)