Ignore C++ keywords when parsing C files.

C files sometimes use reserved C++ keywords, and thus cannot be parsed directly.
The usual solution is to create macros manually (in sonar.cxx.defines) to replace them with non-reserved keywords. This however
does not work for mixed C/C++ projects.

To overcome this, this patch lets the plugin automatically add the macros depending on the type of the file. The plugin also resets
the __cplusplus macro according to the type of the file.
Handle some macro rescanning cases.

This allows handling the case of objectLikeMacro expanding to the name of a functionLikeMacro, which is then followed by arguments:

  #define FOO BAR
  #define BAR(x) bar(x);
  FOO(0);
Implement complete rescanning.

Handle more rescanning cases, e.g. when more than one token is output.
Add CxxPublicApiVisitor which counts documented and undocumented public
API items.
Add UndocumentedApiCheck that creates issue for undocumented API.
Allow the testsuite-tags to be nested in the xunit-report.
Reasoning:
a) there are C++ frameworks which allow such structures (boost)
b) Junit-Reports can have nested testsuite tags too
Add rules for switch 'default' case; 'present' and 'is last'

Migrate the SwitchLastCaseIsDefaultCheck logic over from the Sonar-Java
plugin. The new rule tests that a switch statement has 'default' label,
and that the 'default' is the final case.
Pass relevant default config values into the SSLR Toolkit. Before, it essentially ran with debugRecoveryEnables=True, which isnt default for the plugin
Tests for the c-compatibility mode
Merge pull request #291 from Typz/c_compat

Ignore C++ keywords when parsing C files.
Tests for the C-Compatibility feature
Merge branch 'master' of https://github.com/wenns/sonar-cxx
Merge pull request #304 from Typz/pp-rescan

Improve preprocessor rescan
Merge branch 'master' of https://github.com/wenns/sonar-cxx
Removing one test case as it seems to be invalid. gcc reports:
macros.c:7:15: error: macro "FOO" requires 2 arguments, but only 1 given
 FOO(PAIR(x, y));
Add a testcase which documents a bug in the proprocessor
Merge branch 'public-api-coverage' of git://github.com/lcintrat/sonar-cxx into lcintrat-public-api-coverage

Conflicts:
	cxx-squid/src/main/java/org/sonar/cxx/CxxConfiguration.java
	sonar-cxx-plugin/src/main/java/org/sonar/plugins/cxx/squid/CxxSquidSensor.java
Convert new line style to unix
Merge pull request #320 from Zetten/CustomRules

Add rules for switch 'default' case; 'present' and 'is last'
Fix the test broken by the previous merge