More secure comparison of HMAC strings

To avoid timing attacks. The implementation of SecureCompareStrings is pulled
directly from python 3.4 sources.
indentation fix
Support for SyntaxErrors in CSharp completer
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.
Merge branches 'CygwinTestCompilation', 'CsharpErrorDisplay' and 'TargetRuntimeOutputForMuliConfigBuilds' into mine_master
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
Prevent starting OmniSharp if Omnisharp has already been started
Propagate exception stacks though futures.
Crude razor support