Emitter: Replace old emit_assign with emit_rebox_to_any (mostly internal).

The latter function wraps around emit_rebox_value, which ensures that bare
variants are never directly put into an any without being put into an enum
class value first.

There's probably a bug or two fixed by this. If nothing else, consistency!
Emitter: Fix up typecast eval to be more straightforward.

In particular, writing out a rebox to any inline is unnecessary when there's
a function to do that now.
Emitter: Use type inference for a list of variants when the result is known.

Consider this:
    enum class Option[A] { Some(A), None }
    list[Option[integer]] v = [None, None, None]

This patch allows the emitter to look at the type that is wanted first, then
default to any if that is not found. This is needed because the three None
values do not supply 'A' and 'A' would default to any otherwise.

Previously, this would create a list[Option[any]] on the right side, then fail
to assign the two values.