Added support for module-level protection on user-defined types.

So far, works for classes, structs, unions, enums, and templates.
Fixed access checks for aliases.
Added tests for module-level protection.
Fix for added test.

Forget to add imports.
expand tuples for cpp parameter mangling
Bug 5587: Give unit test name by __LINE__.

This commit appends 'Lxx' to the unittest's mangled name. The user can get the line number from the traceback:

5   x       0x000091c5 onAssertErrorMsg + 73
6   x       0x00009206 onUnittestErrorMsg + 26
7   x       0x00013199 _d_unittestm + 45
8   x       0x000019d7 void x.__unittest_fail(int) + 27
9   x       0x00001a0a void x.__unittestL13_1() + 46
                                        ^^^ line 13
Fix build failure: snprintf doesn't exist on Windows.
# fix indents.
Raise error if member function call has no valid 'this'.
Exceptional cases:
1. In typeof expression.
2. In aggregate DeclDefs scope.
fix Issue 6036 - Constructor, static opCall and object opCall
Cross-references in ddoc
Cross-references in ddoc for templates
Correctly generate anchors for members inside aggregate templates
Don't use this-> if not needed
Correctly emit ddoc cross-references for template instances
Removed extra blank lines
Fixed NPE in TemplateInstance::toCBuffer when generating ddoc
Cross-references for template instances when inside templates (by guessing)
Fix Issue 3836 - [TDPL] obligatory override attribute

Move requiring the override attribute to the next stage, from warning to deprecated.
Fix issue 8354 - Some missing "import std.math to use ^^ operator" error messages

This patch fixes a wrong error message of multiple power expressions without 'import std.math'.
This patch does not fix 'import std.math: pow;' issue, because
'^^' spec is a another problem.