WIP: Hook up user profile editing

Summary:
* User can click on "Edit Profile" in user menu
  * also, the actual username is now shown in the usermenu instead of an placeholder
* She is then able to see her profile data like email, username and realname
* When clicking on the "Edit" button, she is able to edit and save:
  * email
  * realname
  * [[password]]
    * [[with confirmation]]

* We introduce the xeditable plugin for this
  * allows to define inline editable forms
  * see: http://vitalets.github.io/angular-xeditable/
  * copy the styles of this plugin to sass/plugins/_xeditable.scss

* Show a spinner while data is saved
  * added a generated custom spin.js file under server/www/js/
    * created with http://fgnass.github.io/spin.js/
  * add a service for showing and hiding the spinner

* add a notification service
  * internally, it currently uses alert boxes
  * we should replace this with a more advanced solution like on of these plugins:
    * https://github.com/cgross/angular-notify
    * https://github.com/jirikavi/AngularJS-Toaster

* add a session service
  * use localstorage for saving session data between page reloads internally
  * loads stored values from localstorage at startup
  * updates the localstorage when saving session values
  * caches values for reading without repeated access to localstorage
  * places in the code base that used localstorage directly before are using now this session service

* [[Gravatar]]

* wrote specs
  * unit specs
    * test/unit/users/services/endpoints/user-endpoint-spec.js
    * [[test/unit/users/controllers/user-profile-controller-spec.js]]
    * [[test/unit/services/session-spec.js]]
  * e2e spec
    * [[test/e2e/users-e2e-spec.js]]

Fix T1134

Test Plan:
* check the described feature directly in the browser
  * against real backend
* run specs
  * gulp tdd
* run e2e specs
  * protractor test/protractor-conf.js

Reviewers: shadowhand, aMoniker, rjmackay, seth

Maniphest Tasks: T1134

Differential Revision: https://phabricator.ushahidi.com/D557
add app/services/spinner.js to .jshintignore
fix lint issues
fix jshint; move spin.js from server to app/vendor folder