Add an openModal() API method

Submitting this on behalf of @robbaman who built on top of the returned promise I added in my last PR. This adds an `.openModal(options)` call to the API which returns a promise which can be resolved when a `confirm()` function is called on the scope, or rejected if the dialog is closed in some other manner. It allows for a more natural flow control for modal style dialogs, without necessarily detracting from the simplicity if you want to just open a dialog.