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

> 1. It constructs aaLiteral only when it needed: (for _aaGetX and for literals, including literals casting)

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.

> 2. It constructs aaLiteral only it is possible: if Key and Value is not foward reference and if scope is not speculative.

It's problematic that the instantiation depends on this. When the full AA type is needed, like in IndexExp::semantic, forward references should be an error. When the full type is not needed, we should unconditionally defer semantic3.