More view, sort, and threading refactoring

Clean up a number of issues.

- Fix page search, especially for deep results.

- Split thread directive into its own file.

- Clean up the separation between CSS of threads and annotations.

- Separate more actions menu for annotations from thread actions strip.
  Edit and delete in the former. Share and reply in the latter. Cleans
  up controllers quite a bit.

- Refactor both thread and annotation directives.

- Break out progressive rendering service.

- Clean up template variables to use the controllerAs syntax to treat
  controller as the view model.

- Clean up thread collapse prevention during editing.

- Refactor threading to remove the thread property from annotations and
  take ownership of the thread root, removing the need to track many
  things about threading in the App controller.

- Clean up annotation edit cycle and drop the ngModel usage (doesn't
  work well with objects since it does a shallow watch).

- New thread and annotation directives come with full documentation in
  ngdoc style as supported by the dgeni documentation tool.

- Preserve annotations, when appropriate, upon changing authentication.
  Fix #567.
Add results count to stream search
Change search response to use the 'results'

The word 'result' is, I believe, commonly associated with searching.
Drop annotator.discardDrafts helper

The annotator service is not a dumping ground for helper functions.
Combine Viewer and PageSearch controllers

No longer change routes when the query changes between the Viewer
and the PageSearch controller so that the filtering is near instant.
Refactor page search

Refactor the page search rendering algorithm for fewer scope
variables, simpler template expressions, camel case, support
for holes in threads, less looping, conciseness and readability.
Fix browser history navigation on stream