Reduce the number of symbols on the object file.

Summary:
Some compilers where failing with this file because the number of symbols was above 2**15.
- Replace std::list<> and std::vector<> with plain arrays.
- Change VariadicMatcherCreateCallback to be a function template, and a
  single class that wraps the instantiations.
- Remove some more unnecessary template arguments and function calls.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D948

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