Fix for crash on empty link text

If you passed an empty string to the link text, the app would crash on you.
This is because the ranges that the `Shoes::TextBlock` class build up for
styling different segments (which the links rely on for building their click
regions), would end up with `(0..-1)`, or nonsense ranges where the end was
before the start, and downstream code would be very unhappy with those.

We now properly will set the start and end equal in the styling range if the
string is empty, but that left another problem where the styling was always
assumed to apply to at least one character. I've updated those spots as well,
because even with this applied, an empty link or span would unduly influence
the styling of the next character after where it should have been.

Fixes #909.
Ah now I see.

```
2.1.2 :007 > (0..0).size
 => 1 
2.1.2 :008 > (0...0).size
 => 0 
```

Would 0...0 be an option here? E.g. to have gather_text_styles return that?