modal forms wait for success or fail before closing

Modal forms used to close as soon as the submit button was pressed and the success/fail notification appear in the usual place. If there was a failure, the user was forced to reopen the modal and re-enter the info.

This PR enables modals to use promises to wait for success or error and take the appropriate action. If success, the modal will close. If there is an error, the error message appears inside the modal.

Many of the resoucesService methods were changed to return promises instead of using callbacks. Additionally those methods no longer trigger notifications as that is not their responsibility. The responsibility lies with the code that kicks off the request, not the code responsible for making async requests.