Deprecate Param<void*>("__user_context"); add Target::UserContext

Forbid usage of Param<void*>("__user_context"). Instead:
-- custom user context values are specified when jitting by calling Func.set_custom_user_context
-- explicit user-context arguments for ahead-of-time compilation is now specified by adding Target::UserContext to the feature set when compiling. (When specified, the user context is always the first argument.)
Wait, why is Param<void *> not allowed (before and after this change)? It's used to pass arbitrary objects through Halide to extern stages.