[new AA] aaLiteral compiler support

This is a dmd part of the new AA implementation. 
This PR depends on D-Programming-Language/druntime#1046 and uses new aaLiteral version (with arrays of keys and arguments)

>That solution might work with the hybrid vtable AA, but if we want a real library AA at some point we also need to do an instantiating during Type::semantic.

For real library AA we will return AssociativeArray type from semantic. Thus, TypeAArray will be always a type before semantic: when semantic is passed it will be a TypeStruct for AssociativeArray. opIndex AA specific code will be removed (it will be processed as a trivial struct opIndex). AssocArrayLiteralExp will return aaLiteral CallExp.
In other words: Type::semantic will process _type_, Expression::semantic will process _expression_ etc. The problem will be solved by itself. Now you try to process FuncDeclaration inside Type::semantic. This is the root of the problem: as I see, the existing Type::semantic never process Declaration::semantic (see TypeStruct vs StructDeclaration semantic). I process declaration (aaLiteral) inside Expression::semantic but associate it with TypeAArray. I think it is much correctly.