Client/server communication now uses HMAC for auth

This is to prevent a convoluted exploit that can trigger remote code execution.
Error handler now also sets HMAC header.
Support test compilation in Cygwin

Building generates warnings-as-errors from unused-local-typedefs when building the tests. Pass -Wno-unused-local-typedefs to disable this warnings.
The test executable won't link in Cygwin unless the references it needs are explicitly exported.
ExtractIdentifiersFromTagsFileWork test fails because the absolute path will be in Windows form. Skip it.
Making ycm_core_tests only compiles .dll.a and we need the .dll as well. Make ycm_support_lib as well to create the DLLs.
Cygwin executables look in the PATH for DLLs (since they are considered executables). Add YCM's python directory to PATH in the run test call.
Set runtime output for multi-config builds as well
Merge branches 'TargetRuntimeOutputForMuliConfigBuilds' and 'CygwinTestCompilation' into HEAD
Better logging for OmnisharpServer failures
Add GoToImplementation completer command for CSharp completer
Add GoToImplementationElseDeclaration completer command for CSharp completer
Add FindUsages completer command for CSharp completer
Remove Omnisharp server logs on shutdown if server_keep_logfiles is false
Support for SyntaxErrors in CSharp completer
Crude razor support