Adds onAttach triggerMethod.

Adds `triggerAttach` and `beforeTriggerAttach` triggerMethods.

This is the 3rd out of 3 PRs to get #1886 in.
Revisiting this function again - 

what I'd like to be able to do is write:

```js
if (this.isAttached() && shouldTriggerAttach) {
   this.triggerMany(this._displayedViews(), 'attach', this);
}
```

So, i realize that this is a lot of changes rolled up in one snippet:
1. isAttached is discussed above
2. shouldTriggerAttach is discussed above
3. _displayedViews is discussed above

`triggerMany` is a nice abstraction because it cleans up the `loop`. Also, I don't like `triggerAttach` because it is `attach` specific. If we keep it I'd call it `triggerMany` and pass in the full event name so that it can be re-used.  w/r/t passing the view as the first event argument - i think that makes a lot of sense and we can do that with some concat action.