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.
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 7491
function pointers in EH tables are relocated to PLT entries

- replace global symbol relocations with offsets
- remove redundant function pointer in DHandlerTable
- saves runtime relocations
test case for Bug6999
apply scope storage class before function type semantic

 - fix issue 6999

 - this is needed if a storage class would
   affect type inference
Issue 2547 - Array Ops should check length, at least when bounds checking is on

When array bounds checking is enabled, turn

`arrayOp(a, b, ...)`

into

```
auto tmpa = a, tmpb = b, tmpc = c;
assert(tmpa.length == tmpb.length && tmpa.length == tmpc.length && ..., "length mismatch for <array op name>");
arrayOp(tmpa, tmpb, tmpc, ...)
```
Issue 1064 - Tuples are not expanded in array initializers

Expand any tuples in place. expandTuples from expression.c cannot be used because this is an array of ExpInitializers, not Expressions.
Issue 5851 - Ambiguous alias this accepted

Disallow alias this when the aggregate type implicitly converts to the aliased type.

Fixes issue 5851.
Issue 7322 - Taking address of deprecated functions isn't refused

AddrExp::semantic is missing a check when e1 is a VarExp.
Issue 6497 - [safeD] Can take address of local variable through ?:

If the compiler rewrote `&(a ? b : c)` to `&*(a ? &b : &c)`, re-run semantic on the `AddrExp`s to ensure they don't take addresses of local variables.

Fixes issue 6497
Issue 6458 - Multibyte char literals shouldn't implicitly convert to char

Disallow implicit conversion from wider to narrower chars when the value same char is not representable in a single value of the narrower type.

Eg. '\u00e4' is a valid utf-16 code point, and fits in a char, but is not a valid utf-8 code point.
Issue 4517 - final switch over with base type allows missing values

Integral promotions kills the type of the condition and the case expressions, so keep track of the original enum type and allow cases to match if they evaluate to the same integer expression.

Fixes issue4517
Fix Issue 3731 - Can implicitly cast an immutable reference to a derived class to a mutable reference to a base class.

Ensure the modifier conversion is valid before allowing an implicit conversion to a base class.
Fix Issue 5403 - foreach requires front to be a function in a range
Allow using any reasonable symbol as front/back/empty.
Remove references to the old range interface (head/toe/next/retreat)
Fix Issue 3836 - [TDPL] obligatory override attribute

Move requiring the override attribute to the next stage, from warning to deprecated.