Fix #96 many implicit conversions to/from String were broken.

Changed ``SQLTypeUtils.coerceToString()`` to accept a ``Type`` parameter and use the type-appropriate ``TextCodec`` if available.  Changed ``SQLTypeUtils.coerce()`` to handle coercions from ``String`` to the required type if the text parameter format is supported for that type using the type-appropriate ``TextCodec``.   Changed ``SQLTypeUtils.coerceToBytes()`` to use type-appropriate ``TextCodec`` if the source value is a String and a codec exists.

Added test case to cover original issue, plus additional tests that uncovered further conversion issues.  All suite tests passing.

I had the same initial thought.  At least with respect to ``coerceToString()`` there are only really a few special cases (I count 5), most of the existing ones could be collapsed into the final ``else`` (``return val.toString()``).  I haven't dug too deeply whether the special cases could be collapsed into a single case or not -- though I suspect so.