Performance improvements

This PR attempts to improve performance by:
* Upgrading to a newer version of Angular
* Using `$scope.$on('$destroy')` event for garbage-collection
* Storing channel names only in `user.channels`