Record username of the user that pushed commits to the server (take 2)

Adds new feature to record usernames of users who push commits to the server. The feature can be enabled on a per-repository basis; it is off by default.

* User that pushed commits to the server is recorded in git notes associated with that commit.
* Commits view has been adjusted to show all notes on the commit
![commitmsg](https://cloud.githubusercontent.com/assets/4617066/3955462/ddbaca52-2701-11e4-8c23-63aa53ecfeb9.png)
* There's a new option on repository edit page named "Audit Pushes"
* Auditing process runs after git command execution and could, in case of a failure, not reach that point while git command completed successfully. To help mitigate that issue recovery process can be enabled that will run auditing process for previously completed git commands on server start-up or next push to the server. To enable recovery process the following configuration line must be defined in web.config.

        <add key="RecoveryDataPath" value="~\App_Data\Recovery" />

Changes since PR #143 
* Recovery process is now file based, this is easier to maintain and manage by hand should a need arise
* Receive-pack data is fully parsed out to extract commit data so auditing works correctly with tags, branches, rebases.
* Fixed clean install start-up crash issue
* Fixed anonymous push crash issue