Reflected the untrendiness of sudo on OSX install

It's my sense that the npm community is commonly not using sudo
these days, at least in their documentation, and perhaps it's not
common for OSX people to need it on gem either, if people are used
to setting up ruby environments so that it's unnecessary.
Remove our manually backported ng-blur directive,

since our updated Angular.js version has it now.
Fixes #854.

Thanks to @gergely-ujvari for the tip.
Adjusted tab positioning at the request of @dwhly.
Merge pull request #868 from RawKStar77/tabposition

Adjusted tab positioning at the request of @dwhly.
Lookup exact username from the db for stream-search

Searching for a username which contains uppercase letters didn't work for stream searches, because we searched case insensitive (and thus converted the username to lowercase), but ES stored the username case sensitive since it's index is set to 'not_analyzed'.
The straightforward solution would be changing the indexing of the user field, but since currently we do not want ES reindexing, this solution was born: in the streamer.py we search for the user by the given username which is luckily an insensitive-search and that way we can have the case-sensitive username and feeding this to the ES, and that way the stream provides the awated results. This can be replaced when the index is changed.

Fixes #880
Fix: Handle non-existing user names
Apply the username lookup for list values too
Switch to dynamic mode on heatmap up/down arrows.

Fixes #697 (also known as #879).
Filter services.updateViewer() not to display undefined elements

Sometimes this call could get undefined elements (already deleted) in its annotations argument. This change filters these and only displays valid annotations.

One tricky source to create these undefined elements is: trying to create a new annotation when no user is logged in and also H is in dynamic bucket mode. Here when we realize that a login is needed, we already have an annotation stub, which we delete in the login process but the heatmap annotation items in the _fillDynamicBucket() before the login and an undefined empty stub survives. This will be an 'undefined' item in the updateViewer(annotations) call.

Fixes #897
Filter services.showViewer() not to display undefined elements
Wrap clickAdder() in timeout call for ongoing_edit

When a force login is in effect H removes all annotations and reloads them. In the reload process if the clickAdder() call is happenning too soon then an empty reference will be put in a heatmap bucket instead of the newly created annotation, thus resulting a "zombi" in the Viewer.

This may help for #881
Merge pull request #888 from hypothesis/880-uppercase-user-search-fail

Lookup exact username from the db for stream-search