Change location of %op% operator in multicompare

When the %op% operator is the first element
of a multicompare, it properly executes Token::isOp().
Otherwise it uses it's "internal implementation".

Workaround inspired by Edoardo Prezioso.
Properly implement %op% for Token::multiCompare

Use tok->isOp() instead of doing it "manually".

This fixes false positives for the C++ template case since
the brackets in "template < something >" are not comparison operators.

Profiling showed using tok->isOp() is actually faster than before (-O2).
Revert "Change location of %op% operator in multicompare"
It's no longer needed with the proper fix for Token::Match().

This reverts commit 8b2adf1391f5ae02040ecf1fdc6c2d422e87c343.
Match compiler: Workaround broken optimizations in verify mode

If the match compiler uses the 'verify' mode and we
compile with -O2, some tests comparing the on-the-fly-parser
to the compiled match fail.

Small functions are inlined by the -O2 compile flag.
If we disable function inlining and still compile with -O2,
everything is back to normal.

gdb didn't show anything useful during the mismatch
since the needed variables are optimized out. Once
we start printing them, the problem vanishes, too.
-> Can only be diagnosed at the x86 assembly level.

The problem vanished by switching the invocation order
of Token::Match() and the compiled match, so just swap them.

Also add commented out helper code
to better diagnose mismatch problems.
Match compiler: Create 'build' directory if needed
Match compiler: Be more user friendly on how to invoke it
Match compiler: Workaround broken code generation for "!!foo" patterns

This is just meant for the upcoming release.
Match compiler: Add cmdline handling
Token::Match: removed harmless special code for initial '!!foo' patterns.
Add local copy of argparse module to support python 2.6 / python 3.0
Fixed #4389 (False positive: Possible null pointer dereference if the default parameter value is used)
Add missing copyright header