Change the error handling to utilise conditions

Implemented a new condition system that allows better control of the
actions when iconv fails to decode a multibyte sequence.

The old behaviour has been preserved under the function ICONV-COMPAT,
which is now implemented in terms of the new version of ICONV.

Two new functions have also been introduced: ICONV-TO-STRING and
ICONV-FROM-STRING. These functions act on strings instead of byte
arrays, which can be quite useful at times. These functions will
only work on CL's that implement Unicode natively, although for
others they will still be fine for plain ASCII.