Add visual mark getter and setter

Reduces some noise when dealing with visual marks
Reselect visual selection if pos is invalid

in s:move_cursor_extending_selection
Enable swapping by pairs

Clojure as a rule does not require parens around associative key-value
pairs (unlike Scheme for instance). While easier on the eyes, we must
swap pairs of elements in Clojure to do what the user wants (like
swapping positions of let bindings).