Allow usage of button action blocks instead of delegate callbacks

Everything is backwards compatible by default, but if you use the init method with the button actions in it, you will have a more modern block based syntax instead of delegate methods. Also changes the alert block to use indices rather than button titles as string comparisons for those are more complicated than they need to be, especially in localized apps.