Revise DuplicateEntries pass.

This is a modest revision of the DuplicateEntries pass.  There are two
important changes.

First, we do not attempt to rewrite the start block for the orginal
entry, changing its argument list from empty to the original-entry
arguments.  Instead, we introduce a new block with the original-entry
arguments that has no statements and a nullary-Goto to the
original-entry start block.  The "shrink" cleanup pass will merge the
new block with the original-entry start block.

Second, we replace the entry in a Call transfer with one of the new
entries.  Rather than attempt to randomize the replacement, we simply
associate a counter with each original entry, using that as an index
into the vector of replacement transfers (and incrementing the counter
after each replacement).  This does a reasonable job of "mixing-up"
the use of entries through the program, sufficient for the purpose of
this pass (to exercise truly multiple entry functions through the rest
of the compilation pipeline).

The second change is critically important, now that the RemoveUnused
optimization pass has been ported to multi-entry.  RemoveUnused will
remove entries that are unused, and, hence, if new entries are not
used in the program, then RemoveUnused immediately discards them (and
the rest of the compilation pipeline only sees single entry
functions).