feat(c51): per-sample support + branch scales in kernel launches, delete v_range
Replace global v_range infrastructure with per-sample C51 support and
per-branch gradient scales. The IQL trainer sets these pointers after
construction, enabling sample-level distributional RL customization.
- Add per_sample_support_ptr and branch_scales_ptr fields + setters
- Update all kernel launches (C51 loss, C51 grad, CQL, MSE, expected_q)
to pass per_sample_support_ptr instead of v_range_dev_ptr
- Add branch_scales_ptr arg to c51_grad_kernel launch
- Delete adapt_v_range_full, adapt_v_range, adapt_v_range_with_gap,
v_range getter, v_range_buf_ptr getter
- Delete v_range_pinned/v_range_dev_ptr/reward_std_ema fields + alloc/free
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>