str-slice with $end-at should never return a value

This PR fixes an edge case with `str-slice` where `$start-at == 1` and `$end-at == 0` cause by they're normalisation.

Generally speaking `str-slice` should never return a value when `$start-at > $end-at > 0`. Our input validation is aware of this, but due to normalization the case `$start-at == 1` and `$end-at == 0` gets normalised to `$start-at == 0` and `$end-at == 0`. 

Essentially we need to enforce `$start-at > $end-at > 0` pre-normalisation.