Add directive for providing saving updates to buttons 

This wires up the loading/success button state seen in the pattern library (http://localhost:5000/dev/pattern-library) with a directive.

The idea is that a button is given a an attribute that targets a form.

    <button status-button="my-test-form">Update</button>

The controller that handles that form would then trigger events on the scope to notify others of it's current state.

```js
elem.on('submit', function () {
  scope.$emit('form-state', 'my-test-form', 'loading');
  someService.update().then(function () {
      scope.$emit('form-state', 'my-test-form', 'success');
  });
});
```

This was primarily added for the account forms so that the user gets some feedback when the form has submitted, after they change their email/password.

@hypothesis/developers please review.
I think this is better than before, but you're still doing this during linking. You're just doing it during the "pre" phase, when children haven't been linked. But typically, one would do this in the compile phase, before you return the object with "pre" and "post".

Also, this sort of thing is what "transclude" is for. Perhaps this is a degenerate case, because you're not really expecting totally arbitrary content and the directive itself doesn't need its own isolate scope because it doesn't have any of its own data on the scope.

But just so you're aware, if you weren't already.
https://docs.angularjs.org/api/ng/service/$compile

Just add an "<ng-transclude></ng-transclude>" tag to your template. Make the template into the actual template for the directive (`template:`) and set `transclude: true` on the directive.