Wrap-respecting vertical movement and gj/gk.

Implementation of wrap-respecting movement. Needed for gj/gk and core emacs movement commands.

Known possible issues: I don't think it interacts correctly with $, but I'm not sure where $ forces the desired column to be the maximum possible column. Ideally, $ would force preferVisColA to be width-1.