Fix implicit casts in assignments (part 1).

This patch adds support for implicit casts to the elaborate_rval_expr()
function. This will handle the majority of cases where an implicit cast
can occur.
Fix implicit casts in assignments (part 2).

This patch adds support for implicit casts in module port connections
and in user task output assignments.