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

Because type of aa literal may be changed without re-semantic:

`double[double] aa = [1:2, 3:4];`: needs converting of AA members (from int to double) and `aaLiteralCreate` should be called in `castTo`.

`const(int)[const(int)] aa = [1:2, 3:4];`: AA members will not be converted, `aaLiteralCreate` should be called in `implicitCastTo`.