Create a SSH key pair when initializing repositories
* Updated SSHKeyManager to allow multiple invocation of SetPrivateKey
* Extract public key from private key when invoked
* Support back compat by extracting public key from private key when
  GetKey is invoked

Fixes #408
Adding trace message in case we can't get a lock after trying exponential backoff.

Also, ensure that we do try after the last delay.
Addressed code review comments
fix multiple traces related issues
Moved web.config generation on node.js type sites from azure-cli to selectNodeVersion.js.
Small fix to selectNodeVersion.js and update the csproj file
Update detection of node.js sites.
Update web.config to be generated directly in wwwroot.
Also no need to clean web.config if it's not created under the repository.
Fix existsSync.
Touch web.config when deployments finishes (successfully)
remove KuduStartupRequestTest test
* Provide a way to enable shallow cloning using the SCM_USE_SHALLOW_CLONE flag

Fixes #454
Anticipate multi-threaded issue in Tracer
* Reverting changes in 0ba5181bd to generate key on repo initialization
* Adding DELETE method to SSHKeyController to allow key deletion
* Code refactoring to GitExeServer to share code with RepositoryFactory
Fixing warning in GitExeServer
fix multiple deployment due to Bitbucket retry
fix #439 to ensure exception from controller trace
Modify IdleManager to use CPU as a measure to identify if a process is
idling

Fixes #485
Update ProcessExtensions to not throw when it cannot access perf counters
Use bufferless stream to improve perf and resource usage

Fixes #518