Ensuring filename is a plain Python string

We don't want to send a unicode string to the user's ycm_extra_conf.py file.
This should fix problems with sending the filename to YCM's CompilationDatabase
API.
Checking for 'pythonw' only on Windows

On Mac OS X, checking for pythonw can return a path to an ancient 2.4 version of
Python in some cases. We don't want that.
Add QueryPartialMatch to ycm_core
Add complete (auto) select option
[filename_completer] Append '/' to [DIR] automatically
Add supporting vim functions: syntax stack, vimfunc handler
Support regex triggers in g:ycm_semantic_triggers using format /regex/
Add spell_completer
Improve ultisnips_completer to support regex snippet partial match
Optimize spell completer initialization
Fix duplicated candidates from ultisnips completer
Add ultisnips_max_partial_match_candidates user option
Allow empty &filetype and nofile.

Some generic completers like untisnips and filename completers are useful.
Fix spell_completer error for empty query
Add Cmdline completion
Fix spell_completer request data for cmdline completion
Cleanup Cmdline completion code
Merge to upstream
Add dash and underscore completion
Use extra_data to pass spell completer extra data