This patch introduces a class that can help to build tools that require cross translation unit facilities.
This class allows function definitions to be loaded from external AST files based on an index.
In order to use this functionality an index is required. USRs are used as names to look up the functions.
This class also does caching to avoid redundant loading of AST files.
Right now only function defnitions can be loaded using this API, because this is what the Static Analyzer requires.
In to future this could be extended to classes, types etc.
More tests will come together with the first user once it is accepted: https://reviews.llvm.org/D30691