Issue 1904 - wrong protection lookup for private template functions
Issue 3194 - invariant should be checked at the beginning and end of protected functions
Issue 1567 - call to private super-constructor should not be allowed

Current dmd allows you to call a private base class construction from a constructor in another class, in another module.

Added an access check when calling a base class constructor.
Issue 2532 - '=' does not give a boolean result

Change the error message.
Added test case exposing opIndexAssign/opSliceAssign »alias this« bug.
Take alias this into account when resolving opIndexAssign and opSliceAssign.

The code duplication is a bit unfortunate, but as the two operators are special cases in the code already (they need to be handled before the calls are converted to opAssign/opSlice), I didn't see see an easy way to avoid this.
Added ArrayOf macro, renamed Array to ArrayBase, changed all direct uses of Array to type-cheched derivatives.
Issue 2553 - Excess attribute propagation for interfaces

Do not apply any attributes except @safe, @trusted or @system to interface members, following the behaviour for classes.
Force the default protection for interface members to be public.
Issue 5399 - Return the result of a nonvoid function in a void function

Make returning a non-void from a void function an error, and special case lazy void parameters to be re-written as '{ exp; }' instead of '{ return exp; }'.
Issue 2361 - delete is allowed on invariant references

Prevent this by ensuring that the target of delete is a modifiable Lvalue, not just an Lvalue.
Issue 546 - Error message for accessing a deprecated variable is doubled

Do not repeat the deprecation check if alias resolution does not give a different symbol
Issue 6139 - Duplicate error message on compile-time out of bounds array index

An index out of bounds detected at compile time is an error, not simply a failure to interpret.
Do not attempt to convert types to TypeError.
Issue 1471 - Linker error on template function. Error 42: Symbol Undefined
Issue 3273 - struct invariant + dtor fails to compile
Issue 4206 - type accepted as enum initializer

Disable using an expression that evaluates to a type as a ExpInitializer.
Issue 1993 - Error calling vararg delegate with null

Prefer matching the element type rather than the array type when the argument matches both and there are more arguments present.
eg.
void fun(T[][]...) {}
fun(null, null) => fun([null, null])
Remove obsolete bit.c and references to it
Made use of type-checked array accessors mandatory, adapted code at compiler errors.
Merge remote branch 'd/master' into type-checked-arrays

Conflicts:
	src/doc.c
	src/e2ir.c
	src/expression.c
	src/func.c
	src/interpret.c
	src/mtype.c
Post-merge fixes.