refactor(build): faster, modular, gulpfile, bower push

We talked about doing ci-server-side pushes, but the permissions for git on there are hard to get going.  I figure client-side pushes are fine if we have good automation (angular core does client-side pushes too), and the git permissions take care of themselves that way.

**New Features**

- Refactored, modular, quicker, uses gulp
- Pushes modules to bower from client-side
- Uses bower for dependencies

**Todo**

- [x] Update README with build instructions
- [ ] Decide where we are going to push bower repositories to (it's a lot of pollution for angular-ui org, but may not matter)
- [x] Add general bump+release task (use gulp plugin)
- [x] Add cdnjs to automated release task (ask Pawel how it works)
- [x] Finish removing `misc` folder and add a `test` folder
- [x] Add saucelabs (use karma plugin)

**Temporary things to remove before merge**

- [ ] release-pre and release-post tasks do not actually push; right now it is local only for testing. perhaps add --local flag which will do this, and then the default is pushing
- [ ] release-pre task uses gulpfile branch, not master
- [ ] cdnjs task opens a pull request on ajoslin's fork of cdnjs, not origin
- [ ] bower task pushes to http://github.com/ui-bootstrap-bower-test

**Usage**

- node_modules has changed, so do `rm -rf node_modules && bower install && npm install`
- `gulp` to jshint and build and test and docs
- `gulp build` to jshint & build
- `gulp jshint` for just jshint
- `gulp docs` to build docs
- `gulp test` for one-time test
- `gulp watch` for watch and re-run tests on change
- `gulp bower` to push current version of all modules to bower
- `gulp cdnjs` to open pr for current version to cdnjs
- `gulp release-pre` to remove -snapshot from version, commit, tag, changelog, and push to gh-pages & master
- `gulp release-post --bump=major|minor|patch` to bump version, add snapshot, and commit/push
- `gulp release --bump=major|minor|patch` to `release-pre, bower, cdnjs, release-post`
Instead of `gulpif`why not using 2 streams and then merging them? Something like this:
```
gulp.task('scripts', ['clean'], function() {

  var buildTemplates = function () {
    return gulp.src('src/**/*.html')
      .pipe(minifyHtml({
             empty: true,
             spare: true,
             quotes: true
            }))
      .pipe(templateCache({module: 'ui.select'}));
  };

  return es.merge(gulp.src('src/select.js'), buildTemplates())
    .pipe(concat('select.js'))
    .pipe(header(config.banner, {
      timestamp: (new Date()).toISOString(), pkg: config.pkg
    }))
    .pipe(gulp.dest('dist'))
    .pipe(uglify({preserveComments: 'some'}))
    .pipe(rename({ext:'.min.js'}))
    .pipe(gulp.dest('dist'));

});
```
I'm doing it on angular-ui/ui-select#98