fix ~let, add ~case-let and ~case-define, add $null

- rearrange patterns to support identifier generic binders
- ~let works with ~vs
impl ~for,~for*,~for/list,~for*/list