Fix questionable type conversion logic in `toString`

`toString` attempts to align the type of antiquoted expressions with the
type of the containing quotation (which in general, is polymorphic at
type `IsString a => a`).

If the two types are already the same (e.g. antiquoted text inside a
text quotation), then the cast should succeed and no conversion is
necessary. If they are not the same, we convert the antiquotation to the
quotation type via `fromString . show`.

Previously, `fromString` was erroneously applied to the result of
`fromMaybe`, instantiating the result of `cast` at type `String` instead
of being the more general `(IsString b, Typeable b) => b`. This meant
that e.g. text antiquotations inside of a text quotation would fail to
cast, and would be "converted" from `Text` to `Text` via `fromString .
show :: Text -> Text`, which of course adds unwanted quotation marks
around the content.

Credit goes to Maxim Kulkin for pointing out this bug.
Version bump: 1.2.5