generalise (.=.) a little

This renames the function (.=.) in the CodeGenMonad class to `assign`. The (.=.) function is now separate, but generalised to accept on the RHS both single operands and lists of operands. We could add other instances as they make sense as well.