[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)

@yebblies Ok. e1 points to 
```
static immutable AssociativeArrayHandle handle = AssociativeArrayHandle(&_aaLen,
                                   &_aaGetZ,
                                   &_aaGetRvalueX,
                                   &_aaDelX,
                                   &_aaApply,
                                   &_aaApply2,
                                   &_aaEqual,
                                   &_aaValues,
                                   &_aaKeys,
                                   &_aaRehash,
                                   &_aaDup,
                                   &_aaRange,
                                   &_aaRangeEmpty,
                                   &_aaRangeFrontKey,
                                   &_aaRangeFrontValue,
                                   &_aaRangePopFront,
                                   &_aaGetHash);
```
It can't determine type of `AssociativeArrayHandle`. `AssociativeArrayHandle` declared later in module-level:
```
private struct AssociativeArrayHandle
{
    @trusted pure nothrow size_t function(in void* aa) len;
    @trusted               void* function(void** aa, in void* pkey) getZ;
    @trusted        inout(void)* function(inout void* aa, in void* pkey) getRvalueX;
    @trusted                bool function(void* aa, in void* pkey) delX;
                             int function(void* aa, dg_t dg) apply;
                             int function(void* aa, dg2_t dg) apply2;
    @trusted                 int function(in void* e1, in void* e2) equal;

    inout(void)[] function(inout void* p) values;
    inout(void)[] function(inout void* p) keys;
    pure nothrow void* function(void** pp) rehash;
    void* function(void* pp) dup;
    @nogc pure nothrow AARange function(void* aa)  range;
    @nogc pure nothrow bool function(AARange r) rangeEmpty;
    @nogc pure nothrow void* function(AARange r) rangeFrontKey;
    @nogc pure nothrow void* function(AARange r) rangeFrontValue;
    @nogc pure nothrow void function(ref AARange r) rangePopFront;
    size_t function(in void* aa) getHash;
}
```