Use the fuzzy AST for highlighting

Add a UnparsableBlock to the AST which contains a sequence of unparsed tokens.
A token is a type if "llvm::isa<fuzzy::Type>(ATok.ASTReference)" evaluates
true.

The fuzzy parser is in addition to the old syntax highlighting using
libTooling.
Add CallExpr to AST and Fuzzy Parser

CallExpr is the AST node for function calls.

Also added a ExprLineStmt class which embedds an expression
into a statement.
Add ReturnStmt to the AST and the fuzzy parser

When rewriting TokenClassifier.cpp, the fuzzy parser ran over the tokens before
they were annotated, this is fixed now.
add class FunctionDecl for function declarations and definitions.

Only a temporary implementation, need to improve it later.
handle namespace qualified identifiers for types (A::B::C::Type)

Previously, only simple identifiers were allowed.  Only works for types right
now.
parse template arguments for types (such as Type<A,2,C> or Type<>).

Template arguments -- as the namespace qualifiers -- only work for types right
now.
parse qualified ids for types, functions and variables.

The data is stored in a new helper class QualifiedID.  This also enables
unified parsing of qualified ids in the fuzzy parser.