Redesign routes that work with file paths
I'd like to redesign the routes that deal with filesystem paths (blobs, commits, tree, etc.) to be more uniform in their syntax and also to simplify them. I actually have about 90% of this done already, but I still have a few edge cases to figure out and more testing to do before I submit a PR. It can definitely be ready for 3.0.
Proposed routes:
# /:project_id/blame/*path
# /gitlabhq/blame/master/app/contexts/base_context.rb
# /gitlabhq/blame/test/branch/name/app/contexts/base_context.rb
#
# /:project_id/blob/*path
# /gitlabhq/blob/master/app/contexts/base_context.rb
# /gitlabhq/blob/test/branch/name/app/contexts/base_context.rb
#
# /:project_id/commit/:id
# /gitlabhq/commit/caef9ed1121a16ca0cc78715695daaa974271bfd
# /gitlabhq/commit/caef9ed1121a16ca0cc78715695daaa974271bfd.patch
#
# /:project_id/commits
#
# /:project_id/commits/*path
# /gitlabhq/commits/master/app/contexts/base_context.rb
# /gitlabhq/commits/test/branch/name/app/contexts/base_context.rb
#
# /:project_id/tree/*path
# /gitlabhq/tree/master/app
# /gitlabhq/tree/test/branch/name/app