Ignore macro expansions in one-statement-per-line check.

Many macros expand to more than one statement, making this check quite unusable.
This patch ignores all but the first generated statement in a sequence.
Do not generate magic number warning when preprocessor macro is used.
Allow magic number in array initializer.
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).