feat(ng-csv) Allow the ng-csv value to return a promise

Wraps the $scope.data() call in the buildCSV function so that we could optianally return an $http promise from the call with the data.
Also this adds/removes a class so the button could be styled for class loading. This defaults to 'ng-csv-loading' or can be modified via the ngCsvLoadingClass attribute.

My use case and example is (stripped down a lot):
```html
<a ng-csv="csv.generate()">...</a>
```
```coffeescript
$scope.csv.generate = ->
  authHTTP.post '/api/timesheet', filters
  .then (data) -> # at minimum you need to return data.data
    _csv = ((
      name: row.name
      start: Date.create(row.start).format Date.ISO8601_DATETIME
      end: Date.create(row.finish).format Date.ISO8601_DATETIME
      description: angular.element("<div>#{row.comment}</div>")[0].textContent ? ''
    ) for row in data.data)
    _csv
```