[WIP] DIP63 : operator overloading for raw templates

http://wiki.dlang.org/DIP63

After countless trial & error cycles I got most basic version that works for `opIndex` + `opDollar`. However my DMD hacking skills are horrible and before cleaning everything and adding more operator support I'd love to read some feedback if the way it is implemented is acceptable.

Please do not pay attention to all the debug stuff, just how it fits DMD architecture in general.
@9rnsr your feedback is most appreciated.

@WalterBright this DIP still needs your approval / rejection

```D
template Pack(T...)
{
    alias opIndex(size_t index) = T[index];
    enum opDollar = T.length;
}

alias element1 = Pack!(int, double)[1]; 
alias element2 = Pack!(int, double)[$-1];

pragma(msg, element1);
pragma(msg, element2);
```