Syntax higlighting improvements

- Support all languages Syntax::Highlight::Engine::Kate can detect
- Detect filetype based on #! lines in scripts
- Consider .t files to be perl code
Have linenumbers in blob displays

Steal some code from the blob template and adapt the syntax highlighting
code to cope with it.
Massive tree action speedup

The tree action used to use $tree_obj->tree to get all tree entries.
This is ridiculously slow as it loads all blobs via git cat-file.
Instead, expose directory_entries from the underlying Git::PurePerl
object and use it instead.

This also required moving _mode_str (now mode_string for consistency) to
Gitalist::Utils so it could be used in the template.
Merge remote branch 'seveas/seveas/tree_speedup'

* seveas/seveas/tree_speedup:
  Massive tree action speedup
Merge remote branch 'seveas/seveas/syntax_highlight'

* seveas/seveas/syntax_highlight:
  Have linenumbers in blob displays
  Syntax higlighting improvements
The branch selector now sends you to the correct url

It used to not escape the branch name, so branches like
seveas/branch_selector_fix were not really reachable via the selector
Merge branch 'branch-selector-fix'

* branch-selector-fix:
  The branch selector now sends you to the correct url
Update gitalist_app.psgi with working copy.

As t0m added and I've now put into place.
Bump version to 0.004002 and update Changes.