Run 'topLet' in a 'topDownSuc' manner during 'flattenCallTree'
Run 'topLet' in a 'topDownSuc' manner during 'flattenCallTree'

Before when we had code like:

> \x -> let y = 2 in y

the 'bindConstants' part of 'flattenCallTree', would first call
'bindConstantVar' to translate the above to:

> \x -> 2

which is invalid normal form, then it would just call 'topLet',
but this transformation doesn't look past lambda's. So we have
to apply 'topLet' in a topDownSuc manner, where the "Suc" part
indicates that the traversal stops as soon as the transformation
succeeds. We then end up with:

> \x -> let topLet = 2 in topLet

which is a valid normal form.

ggreif/clash-compiler,ggreif/clash-compiler