Instead of trying to extend the Mode::Visual special case, just split out into three different modes.
These primarily happen when first entering visual mode, but can also be created with objects like `vi{`. Along the way fix the way ranges like `vi{` are selected to be more similar to nvim.