Fixed crash when file path of a unit was invalid.
Improved support in parser for template classes and functions.

* Use clangIndex to identify declarations across translation units.
* Added new Find*ByUSR methods and removed unused Find*(IntPtr) methods.
* Added Depth/Index and IsParameterPack fields to TemplateParameterType.
* Fixed member initialization issues in C++ Method class.
* Added AST tests for function and class templates.
* All tests pass with new and old parser.
Improved template parsing error handling.

For an example of what can trigger it:

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_string;

  extern template class basic_string<char>;

Signed-off-by: Elias Holzer <elias@vvvv.org>
Applied "Improved template parsing error handling" to old parser.
Removed redundant code.
Increased the initial capacity of the used SmallString when generating a USR.
Merge pull request #248 from azeno/improved-template-support

Improved template support