Preserve point position when indenting.

Fixes #7966.

The new logic is as follows:

If point is in the leading whitespace, jump to the first non-whitespace
character.

Before:
  |  foo
After <tab>:
    |foo

If point is on non-whitespace character, preserve its offset after
indentation.

Before:
  fo|o
After <tab>:
    fo|o

Finally, if point is on an end keyword (see `julia-block-end-keywords`),
then skip to the end. This allows repeated <tab> to navigate out of
blocks.

Before:
|        end
    end
<tab> once:
        end|
    end
<tab> again:
        end
    end|