Report Issues instead of Violations.

Use of 'Violation' class is deprecated since Sonar 3.6, and replaced with Issue; Context.saveViolation is replaced by Issuable.

This also allows properly counting the issues, i.e. accounting for disable rules and switched off violations.
Add a metric for dependencies violations.
Add line of include in cyclic dependency violation.
Create violation when the same file is explicitly included twice.
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.