Introduce the clangIDE library.

Libclang has a lot of functionality that is inaccessible.
The purpose of clangIDE is to move most of the functionality of libclang to it so we
can expose it and have libclang be more of a thin C wrapper over clangIDE.

Start by moving the USR generation functionality into clangIDE.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188569 91177308-0d34-0410-b5e6-96231b3b80d8
Thread safety analysis: new test case

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188571 91177308-0d34-0410-b5e6-96231b3b80d8