Refactor CTFE assign

A big chunk of the complexity of the CTFE engine is in one enormous function, BinExp::interpretAssignCommon.
This pull request just splits it into three pieces, as a first step to getting it under control.