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.)
Do we always compile with asserts on? I think we do, but I'm slightly nervous about using assert to run validation that should always be done.