Added option for cancel callback

Added option to pass a cancelCallback Action, that is called when the user cancels the dialog with the Back button. If no cancelCallback is passed, the dialog is not cancelable.

Also added null check for synchronizationContext in SetupDialog, as I was getting crashes because of this.

Sorry bout the formatting, ReSharper got a bit trigger happy...

EDIT: I noticed that the cancelCallback was triggered whenever I called AndHUD.Shared.Dismiss(), which means there is no way to remove the dialog without triggering the cancelCallback. I wanted the cancelCallback to trigger only if I manually canceled the dialog by pressing the back button. I therefore modified the Dismiss method to call CurrentDialog.Dismiss() instead of .Cancel(). 

While this may be a minor breaking change, it better matches the naming of the .Dismiss() method IMHO. Perhaps one could also add a .Cancel() method to AndHUD, which would call CurrentDialog.Cancel()?