inference: add task_result_type builtin
Very similar to return_type. Because of the design of Task reusing the
`result` field to mean a lot of different things, it is hard to make
this inference safe and sound now. Try anyways to add a type-assert so
that `fetch` is inferred even if the design of Task make it unsafe.