Cygwin support

Changes

1. Cygwin wants compiled Python modules to be X.dll.
2. I got errors from unused-local-typedefs when building the tests. Pass -Wno-unused-local-typedefs to disable this error.
3. CMake puts dlls into the RUNTIME_OUTPUT_DIRECTORY.
4. Since we are supporting cygwin as cygwin, explicitly disable CMake legacy W32 mode to avoid warnings.
5. The test exe won't link unless the references it needs are explicitly exported.
6. ExtractIdentifiersFromTagsFileWork test fails because the absolute path will be in Windows form. Skip it.
7. 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.
8. Cygwin exe looks in the PATH for dlls (since they are considered executables). Add dll directory to PATH in the run test call.
9. msbuild could only be visible as msbuild.exe. Check for that as well in the Omnisharp build step.
10. Utils.OnWindows is false for cygwin. Add OnCygwin test, and exclude OnCygwin from calling Omnisharp with Mono as well.
11. Update Omnisharp submodule to pick up recent Cygwin support, and pass the needed command argument to enable it.

I have already signed the CLA.