Add JS validation for invalid characters in branch name
Fixes#3293
Demo:

See merge request !2122
A limited number of pages have defined their own descriptions, but
otherwise we default to the Project's description (if `@project` is
set), or the old `brand_title` fallback.
The image will either be the uploaded project icon (never a generated
one), the user's uploaded icon or Gravatar, or, finally, the GitLab
logo.
Add project permissions to all project API endpoints
This standardizes all the project API formats. Also needed to support Huboard.
See merge request !2090
Fix method that ensures authentication token
Until now, `ensure_#{token_filed_name}!` method didn't persist new token in database.
This closes#4235.
See merge request !2185
Improve emoji picker
This request uses an emoji image sprite to show big set of emojis. The sprite has been made based one gemojione gem images. The categories are retrieved from https://github.com/jonathanwiesel/gemojione/blob/master/config/index.json as well.
Some categories are pretty poor, it can be extended in the future.
It's a first step on the way to improve picker.
The first implementation was using https://github.com/iamcal/emoji-data project, but there was huge incompatibility with gemojione emojis set and I had to drop that solution.

See merge request !2172
Make CI Lint form synchronous
This removes `remote: true` from CI Lint form, making it synchronous
form. This also removes some complexity related to displaying lint
messages.
View also has been updated, removed deprecated Bootstrap 2 tags.
Improved design.
See merge request !2171
Fix and test leave project display
The 'Leave this project' display on project page was broken. It was calling the method incorrectly, which returned `nil` and displayed nothing.
This fixes the display and also adds 2 different tests for it.
cc/ @jvanbaarsen @stanhu Please review and merge if you think it looks good. Thank you!
See merge request !2166
This removes `remote: true` from CI Lint form, making it synchronous
form. This also removes some complexity related to displaying lint
messages.
View also has been updated, removed deprecated Bootstrap 2 tags.
Improved design.
Closes#4206
Allow account unlock via email
We see a lot of users get confused about what it means when your account gets
locked. Many try to reset their password and are still faced with a lockout.
With this change, users receive an email that allows them to unlock their
account immediately. The previous behavior where the account is auto-unlocked
after a time also still works.
See merge request !2049
This ensures we don't end up wasting resources by tracking method calls
that only take a few microseconds. By default the threshold is 10
milliseconds but this can be changed using the gitlab.yml configuration
file.