Clean up setting of fonts

This patch simply refactors the old SetCurrentDiffFont method into three
methods, SetCurrentDiffFont, SetCurrentApplicationFont and
SetFontButtonText.
Support a separate font for the commit message

This patch adds a config setting for a CommitFont. It makes the TextBoxFont
property of EditNetSpell public, so that this can be set to the CommitFont.

Also, a commit font dialog is added to the settings form, so that it can be
easily configured.
Change FormCommit to use TextChanged event instead of KeyPress

Soon, lines that are too long will be marked red for characters that cross
the configured boundary for max line length. For this to work properly, we
will need to use the TextChanged event. The reason is that the KeyPress
event is invoked *before* the key that was pressed has been assigned to the
TextBox.Text property.
Add helper methods for line count/length to EditNetSpell

It's nice to be able to get the LineCount and LineLength for text in the
TextBox, and upcoming patches will require them.
Add red coloring to long subject line in commit message

If the config is set to allow max 72 chars in the commit message subject
line, then any character exceeding 72 chars will be colored red, so as to
indicate to the user that he should shorten it.

The patch also does some simple refactoring; the method is renamed to
FormatLine - now taking a zero-offset line parameter.

The if tests have also been slightly modified; instead of comparing the
limit to Message.CurrentColumn, the limit is now compared with the
lineLength. The reason is that a user might type a long line, then click
somewhere in the middle of the line and press backspace... The line may
still be longer than the allowed limit.
Add config option to enable/disable indentation in commit messages

This patch adds a checkbox to the commit template settings window, which
controls a newly added config CommitValidationIndentAfterFirstLine. By
default this is checked, so the behaviour is the same as before this patch.

If unchecked, then commit messages will not have a bullet " - " appended on
line 3 of the commit message, and no indent will be inserted in the
WordWrap method, when newlines are created.
Add event TextAssigned to EditNetSpell. Use to format commit msgs

This event is invoked when the Text property is set programatically, and we
use this to call the FormatAllText method. FormatAllText simply calls
FormatLine for all lines in the text, such that any formatting is applied
to text that is assigned to the commit message text box.

Useful when a cached message is assigned to Message.Text. It might need
coloring or word-wrapping.
Add index guards in EditNetSpell.WrapWord method

If this method is called on empty lines or lines with only whitespace, it
will throw an exception, because the while loops did not have any
termination for that case.

Fixed with simple guards that the index must be >= zero.
Rename/Modify EditNetSpell.ForceNextLine to EnsureEmptyLine

This patch changes this method so that it doesn't matter if it is called at
the end of some text *or* for any line of existing text. If the latter is
the case, it will do nothing if the line of the supplied 'line' argument is
already an empty line. In other cases it will insert a new line.

If any insertion is done, it will not explicitly set the Text property, but
rather modify the SelectedText. This has the benefit that existing coloring
is preserved.
Add option to turn off automatic word-wrapping in commit messages

This patch adds a checkbox called Auto-wrap to the status bar. If checked
(which is the default), it will behave as before, so that text below the
subject line is automatically word-wrapped.

If unchecked, no wrapping is done, and instead line coloring is performed
as for the subject line. This is useful for people who might insert ascii
art into commit messages, and thus occasional breaching of max length for
lines might be acceptable. Also useful for users who simply want to do line
wrapping manually.
Use git to choose file on choose local/remote/base file in FormResolveConflicts

 - It is important to use git to checkout files because old existing methods in GitModule.cs
   can checkout wrong file content. This is still a problem in method SaveBlobAs and
   should also be fixed.
 - Fixes part of issue #1456
Use git to save/open a file on save/open in FormResolveConflicts

 - It is important to use git to checkout files because old existing methods in GitModule.cs
   can checkout wrong file content. This is still a problem in method SaveBlobAs and
   should also be fixed.
- Now it is also shown an error if open or save file failed
- Fixes part of issue #1456
Only show save as and open with in context menu of conflicted files if files are present
Use a more git compatible way to convert lf to crlf in GitModule.SaveBlobAs

- The old version of GitModule.SaveBlobAs removes file information like BOM,
  the new version of GitModule.SaveBlobAs treats the file more like a binary file.
 - GitModule.ConvertCrLfToWorktree is a better way to do line ending conversion
   in GitExtensions. It converts line endings in the fashion of git.
- But it doesn't checkout files like git will do it. Because it doesn't parse .gitattributes
  file and has not the same lf to crlf algorithm.
- The best way to check out a file in SaveBlobAs would be to use git checkout <commit-id> <name of
   file>. But that would overwrite current file in working directory.
replace "$dir$ + $path$" with Path.Combine($dir$, $path$)
locations which add other stuff
Removed HEAD from checkout branch dialog
Araxis support improved
Python code highlighting added. Closes #1532
Use ISettingsPage to group other pages