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.
Uncommitted WorkingDir changed to unstaged files
Submodule checking fixed in some situations for FileViewer and Browse form
Merge branch 'master' into pr/n1420_torarvid

Conflicts:
	GitUI/FormSettings.Designer.cs
	GitUI/FormSettings.cs
	GitUI/SettingsDialog/Pages/ScriptsSettingsPage.resx
Merge branch 'pr/n1420_torarvid'
Updated GitExtensionsTest
Detached branch constant added
minor doc and parameter name changes; minor sp;
Settings form, Checklist page text near bottom was cut off;
Two methods moved from CommitInformation to GitModule

FormCheckoutBranch use LocalChangesAction.DontChange when contain parameter not equal null (checkout branch form called from commit form)
recurse child Controls and use for search keywords;