[DDMD] [refactor] Move Expression::toElem into a visitor class

@AndrejMitrovic Another one that's way way way too big.  There's at least one bug I still haven't tracked down yet.

@ibuclaw This one is very gluey.