Fix bug with onRenderCollection call

Fixes #1503 
Fixes #1506  
Naively, I like this solution because buffering only makes sense when you're showing a list of things. 

```js
if (!this.isEmpty(this.collection)) {
        this.triggerMethod('before:render:collection', this);
        this.startBuffering();
        this.showCollection();
        this.endBuffering();
        this.triggerMethod('render:collection', this);
 } else {
        this.showEmptyView();
}
```

If we did ths, we could write this code, which would read really well: 

```js
if (!this.isEmpty(this.collection)) {
   this.showList();
 } else {
   this.showEmptyView();
 }
```