Compiler: add Task call, invoke, and fetch optimizations and operations
This commit implements a Task optimizations by adding a `invoked` field
to the Task definition, which optionally causes it to do an `invoke`
call internally instead of a regular `call`.
Key changes:
- Add `invoked` field to Task structure, supporting Type, Method, MethodInstance, and CodeInstance, just like invoke
- Implement `_task` builtin function to construct Task
- Create PartialTask lattice element for precise task result and error type tracking
- Unify several CallInfo types into IndirectCallInfo
- Optimized calls to `_task` constructor to inject CodeInstance.
Calling `fully_covers` isn't necessary, as the runtime will check that.
In the future we can make this field user-inaccessible (like scope) and
then be able to optimize based on the type returned from `fetch`.
Also added documentation to base/docs/basedocs.jl on how to easily add
more Builtin functions, following this as an example.
🤖 Generated with help from [Claude Code](https://claude.ai/code)