refactor($ionicLoading,$ionicPopup): factor out common code, add tests

- Add $ionicTemplateLoader.compile, which is able to compile a templateUrl or template, with optional controller and parent element, and returns a promise.  That promise is resolved once the compilation/template fetching is done, and gives back an object with an element property and scope property.

- Add $ionicBackdrop service, which has a retain() method and a release() method.  If two different services call $ionicBackdrop.retain(), it will show the one backdrop element until both call $ionicBackdrop.release().

- Add `ng-hide-fade` scss mixin to give a class ng-hide fading.  Makes it easy to make an element able to be faded with `$animate.removeClass(el, 'ng-hide')` and `$animate.addClass(el, 'ng-hide')`

- Add deprecated.js as js/ext/angular/deprecated.js, which allows us to give a log.warn/error whenever a method is called or property is accessed on an object.  https://github.com/wearefractal/deprecated

- Refactor loading, add deprecated $log.warns for old methods. Closes issues: #699, #391, #756, #658, #878, #960
- Refactored popup using $ionicTemplateLoader and $ionicBackdrop, simplifies code and adds unit test suite.  Popup API could still use visitation (#856), but is same for now.

**Next steps:**

- Add $ionicToast service (#994)
- Use $ionicTemplateLoader and $ionicBackdrop in Modal and Action Sheet