Make dot expr as an Expr

- Make dot expr as an Expr
- Many exprs (dot, reshape, etc.) are shuffle-like. So we can reuse shuffle.target_mapper or shuffle.nontarget_mapper instead of writing a new one.