Powerful $scope oriented angular $q promise wrapper