YCM rewritten to have a client-server architecture

See the [related ycm-users thread](https://groups.google.com/d/topic/ycm-users/lO5KIaJAgRA/discussion) for details. Please take it out for a test drive!

Fixes #358.