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.
I was originally a bit surprised by that as well, but a range with start == end has a size/count of 1. In this and the other case, do you think it'd be clearer to compare `range.last > range.first` or some other conditional there? 

```
[1] pry(main)> (0..0).size
=> 1
```

Not too familiar with JRuby internals, but from https://github.com/jruby/jruby/blob/28d8c515027e294a649fadd078cb2776068bd9e9/core/src/main/java/org/jruby/RubyRange.java#L719-L725 it does appear that `size` might be implemented natively on the `Range` type, where `count` comes from `Enumerable` and probably iterates? Might be  moot point, though, if we go with a different comparison, but otherwise probably best to use `size` instead.