allow casting Typedef to another Typedef

Now when I tries to cast from `Typedef!(Foo)` to `Typedef!(const(Foo))` I get a `e2ir` error.
Moreover, when I have a `alias TD = Typedef(Foo)`, I can't cast `const(TD)` to `TD`.
This PR fixes this issue.
This is template parameter for `this`.  opCast may be called for mutable, const, shared etc. objects. However we should perform similar actions for all object type. See opConst definition in `Proxy` template.