YCMInternal: Use string(MAKE_C_IDENTIFIER) if available
YCMInternal: Quote filename to avoid issues
YCMInternal: Prepend hash with underscore

This allows us to have a similar name in all the cases, since later
an underscore is added if the name starts with [0-9] but it is not when
it starts with [a-f]
YCMInternal: Quote filenames everywhere to avoid possible issues
YCMInternal: Add empty command to make Xcode happy

Fix #63
Travis: fix test target on Xcode builds
Travis: improve script
ExternalProject: Always add a command to a step

Some generators (i.e. Xcode) will not generate a file target if no command
is set, and therefore the dependencies will be broken.
We set an echo command that does nothing to avoid this issue.