Strip white space at the beginning of function-like macros.

This was already done for object-like macros, and is required for proper concatenation (##), indent check...
Account for tab-width in indentation level check.
Fix members indentation checks.

Check if member definitions are aligned, instead of simple types: this used to cause problems e.g. with 'virtual' members.
Fix indentation check if indent starts on the same line.

In case code starts on the same line as block, indentation reports a failure if
the next lines are not aligned with the first symbol.

i.e.
void f() { int i = 3;          // OK to add the code at the end of the line
           return i * i / 3; } // Correct: aligned with previous definition

It may be a bad practice to add code on the same line as the beginning of the
block, but that should be a separate rule.
Fix indent of labels.
Fix indentation after conditions/loops.

Indentation was not correct if the conditional blocks were not compound
statements, or conditions were cascaded (e.g. else if).
Fix indent inside linkage declaration and namespace blocks.

* Namespace block content was supposed to be indented twice.
* Linkage specification block were supposed to be indented: this is often not
practical, since this is used in code compatible with both C and C++, and C
indent is most often used while the linkage spec is in #ifdef block.
* Add options to indicate namespace blocks should not indent (default: true).
* Add options to indicate linkage specification blocks should indent (default:
false).
Also check if declarations are properly indented.
Check indentation of case/default keywords in switch.
Add option to avoid indenting on switchBlockStatementGroups.
Account for trivias in alignment check.

* Do not report error if there are trivias before the token, on the same line.
* Verify trivias are correctly aligned as well.
* Verification preprocessor directives start at first column.