feature/libclang

This PR adds support for more intelligent C/C++ editing using libclang. It includes basic code completion (symbol names, but not signatures) and basic code navigation (definitions within a translation unit, declarations across translation units). There is still lots of work to do in order to get this up to snuff with other C/C++ environments but the basic building blocks for this work are now in place.