Add failing test for tab indentation

Currently, tab indentation is broken. It selects wildly different lines
from what is expected.

Similar to issue #1. textobj-user is not screen column aware, so
switching to it broke our behavior with tab indentation.

Vader will execute plain text with your default ft settings, which can
break tests, so I'm forcing sw/ts to the settings used by vader. This
allows me to see tests as they'll be executed.
Copy gif-example for tab indentation

Make a copy of the gif-example that uses tabs for indentation instead of
spaces. This doesn't necessarily cover a lot of cases (like varying
indentation levels), but it does some typical editing.

TODO: All tests in gif-example-tabindent fail.
Don't do old "smart col" search with exact cols

find_boundary_row and whitespace_column_wanted both do searches to find
boundaries. These are pointless if we're calling find_rectangle.

In the case where we fallback to find_smart_boundary_cols, call
whitespace_column_wanted to maintain old behavior (doc-example test
still passes).

Remove unused whitespace_only from find_rectangle's arguments.
Use min and max instead of comparison operators

Using min and max functions directly express what we're trying to find.

Theoretically, we could refactor to pass Funcrefs to a single comparison
function, but I don't think that's more readable.
Hoist common if statement into calling code

I'm trying to keep the duplicate code in col_bounds_max and
col_bounds_min to a minimum.
Convert use of columns to a column object

The object contains both the byte position and the screen column. This
way we can determine our block selection from screen column and still
provide textobj-user with a byte position.

Fixes first two tests in gif-example-tabindent, but final test still
fails. Leading tab test in regression test still fails.