Support document access strategy failover

Detect when scanning with the selected document access strategy fails,
and try to fall back to other strategies.

(This will allow using the Dummy strategy when d-t-m fails for some reason.)

Also, fix TextPosition strategy to avoid crashing without d-t-m.
> How is this different from list[index]?

 * `list[index..index]` is a slice of the array. Assigning `[]` to it means removing an element from the array.
 * `list[index]` is an element of the array. Assigning `[]` to it will placing a new, empty array inside the existing array.

It's just not the same.

Would you prefer a different method for removing a member of an array?