Type seeding now seeds return type first, to ensure proper locking order

In a case where I would try to compile a function like

```python
@udf(int32(FunctionContext, IntVal))
def fn(context, x):
    return x
```

The type for `x` would get locked as `IntVal` rather than `int32`.  Setting the return type first solves this problem.