[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.
Current AA implementation is one big hole:
```
void* p;
struct MyKey
{
    size_t a;
    size_t toHash() const
    {
        p = cast(void*)a;
        if (a == 5)
            throw new Exception("hello");
        return a;
    }
}

void main() @safe pure nothrow
{
    int[MyKey] aa;
    aa[MyKey(3)] = 3;
    aa[MyKey(5)] = 5; //BOOOM
}
```
This code succesfully compiles and runs on dmd v2.066

This PR is a transitional stage between current implementation and new good, safe template-based implementation.
This PR doesn't brings something new. Where dmd inserts `aaLiteral`, it called `_d_assocarrayliteralTX` without any checks early.