Avoid needlessly splitting a UniqSupply

In many places, 'splitUniqSupply' + 'uniqFromSupply' is used to split a
UniqSupply into a Unique and a new UniqSupply. In such places we should
instead use the more efficient and more appropriate 'takeUniqFromSupply'.
experimental change to the definition of mkSplitUniqSupply