add |> and <| piping operators; rework how atoms are parsed
support diagonal movement