Parallel diff in two columns.
Duplicate the behaviour and refactor for use with parallel diff.
Remove duplication, expand for next_line.
File mode changed note.
Take added or removed file into account.
Coloring.
Take the next type into consideration
Don't show the line numbers if the lines were removed.
Color the lines correctly.
Now refactor all to work properly.
Cleanup
Gitlab::Diff classes added

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Refactor diff views

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Use new diff parsing logic

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fix all broken stuff after diff refactoring

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Specs for diff parser! Yay!

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Refactoring inside refactoring. We need to go deeper

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
optimize show_diff_size_warning?

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fix usage of diff file mode change

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Merge branch 'refactor-diff-yeild' into 'parallel_diff_refactor'

Refactor diffs

This refactoring done on top of Marin improvements to side-by-side diff.
Main target of this refactoring is to reduce mess and increase test coverage.

1. Use objects:
  * Gitlab::Diff::Line for line change in diff
  * Gitlab::Diff::File for file changes (diff + blob info)
2. Avoid `yield` magic
3. Move logic from views/helper to models/libs
4. Move diff views under separate dir `app/views/projects/diffs`

See merge request !1072