[WIP] Create merge request when editing on web UI v3

Fixes: ACCEPTING MR at: http://feedback.gitlab.com/forums/176466-general/suggestions/5350102-option-to-make-a-merge-request-when-editing-via-we

Supersedes:

- https://github.com/gitlabhq/gitlabhq/pull/8056
- the original request: https://github.com/gitlabhq/gitlabhq/pull/7266

Dependencies:

- [ ] https://github.com/gitlabhq/gitlabhq/pull/8053/files (fixes the only CI failure)

Dependencies already included here which were extracted from this PR and should be evaluated separately and merged first:

- [ ] https://github.com/gitlabhq/gitlabhq/pull/8128 . That PR is already included here since it was extracted from this one, but it is useful on it's own and should be merged first.
- [ ] https://github.com/gitlabhq/gitlabhq/pull/8131 to fix the PATH problem and add the mock server
- [ ] https://github.com/gitlabhq/gitlabhq/pull/8183 for `can_push_to?`

TODO on future PRs:

- Allow to create new branch without creating a merge request (add new checkbox, implied by create mr)
- When already on fork, add a "Create merge request back to origin checkbox"

TODO just before merging this after having evaluated:

- set the gitlab-shell URL back to the original one

## Blob edit page UI changes

If user has push permission on the current branch, when the page loads it looks like:

![screenshot from 2014-10-15 21 20 53 user has permission initial](https://cloud.githubusercontent.com/assets/1429315/4652004/f622c956-54a0-11e4-8bf4-c6fea3d78bf3.png)

If user clicks on "Create merge request", more options appear:

![screenshot from 2014-10-15 21 21 24 user has permission expand](https://cloud.githubusercontent.com/assets/1429315/4652008/037baa50-54a1-11e4-9ee2-2a99fd74bb0e.png)

By default, branch name is a free branch name on both repositories. When user toggles "On my fork", and he has not yet modified it, it toggles the branch name to a good branch name on given repo:

![screenshot from 2014-10-15 21 21 42 toggle on my fork before edit](https://cloud.githubusercontent.com/assets/1429315/4652024/28941c78-54a1-11e4-8a90-421b83e89e67.png)

toggle again:

![screenshot from 2014-10-15 21 22 06 toggle again](https://cloud.githubusercontent.com/assets/1429315/4652025/289aeb20-54a1-11e4-9708-510981b3c2f4.png)

If user edits the branch name to a new one, the toggle stops. After editing and toggle:

![screenshot from 2014-10-15 21 22 24 edit and toggle](https://cloud.githubusercontent.com/assets/1429315/4652035/5163c950-54a1-11e4-9618-e644c03d32ae.png)

User does not have push permission, he must fork. "Create merge request" and "On my fork" are checked and disabled:

![screenshot from 2014-10-15 21 23 22 user does not have push permission on current branch](https://cloud.githubusercontent.com/assets/1429315/4652051/7f79cb50-54a1-11e4-92f3-0d46e2cce281.png)

If user is already on his fork, he does not see "On my fork":

![screenshot from 2014-10-15 21 24 20 user is on his own fork already](https://cloud.githubusercontent.com/assets/1429315/4652057/8c73b1f4-54a1-11e4-8f2b-870f7d17100e.png)

The merge request would be generated between the current repo and itself.

There is also a minor UI behavior change at blob#show: the edit button is enabled even if you don't have push permission since you can edit to start a merge request:

![screenshot from 2014-10-15 21 45 23 blob show edit](https://cloud.githubusercontent.com/assets/1429315/4652320/1d2fc28a-54a4-11e4-835f-ebf9ee63418f.png)

## Are there points in the code the reviewer needs to double check?

The **hard** thing of this MR was the testing.

See the dependencies above and check them very well.
Avoid multi-line ?: (the ternary operator); use `if`/`unless` instead.