Differentiate singletons and zero-arg constructors.

Now that there is a singleton variant of CasesBranch, we can raise
an error when parentheses are used for a singleton, or not used when
they should be.
Clean up now that the return contract bug is fixed.