Performance improvements

Some progress on #87

- `ng-repeat` on function calls is expensive, as the functions have to be evaluated every time to check for changes, and the result compared to the previous value. Using a data structure and modifying that is faster by nearly a third (non-scientifically measured on my laptop). This fixes that for the buffer lines and the nicklist
- Use `ng-if` instead of `ng-show` and `ng-hide` where it makes sense to reduce the number of unused DOM nodes. While this isn't much of a concern on the desktop, mobile devices are much less powerful and hopefully, this reduces memory usage. It annoys me greatly that the Glowing Bear app is evicted pretty much all the time if I use another app in between (maguro on 4.4, 1GB RAM).