fails:String#next returns an empty string for empty strings
fails:String#next returns the successor by increasing the rightmost alphanumeric (digit => digit, letter => letter with same case)
fails:String#next increases non-alphanumerics (via ascii rules) if there are no alphanumerics
fails:String#next increases the next best alphanumeric (jumping over non-alphanumerics) if there is a carry
fails:String#next increases the next best character if there is a carry for non-alphanumerics
fails:String#next adds an additional character (just left to the last increased one) if there is a carry and no character left to increase
fails:String#next returns subclass instances when called on a subclass
fails:String#next taints the result if self is tainted
fails:String#next! is equivalent to succ, but modifies self in place (still returns self)
fails:String#next! raises a RuntimeError if self is frozen
