[new AA] implement aaLiteral

This functions will be used to constructing AA values: literals and nulls. When this PR will be merged, I will create PR for dmd, which uses this functions, and when dmd PR will be merged, I'll create PR, which rewrite this functions to use new AA implementation.
>Wouldn't the compiler already do the conversion/casting?

No, I've tried do it without casting. There was a troubles.

>keys[i / 2] = cast(Key)args[i];

I've written about it: construct array with initializing is a bad idea, assign is a bad idea too. And what if Key is a const(Class)? Assignment for the const class is disabled.