JsonSchemaException: wrap inner exceptions correctly

It could happen that the JsonSchemaException(msg, e) constructor was called with
e being itself a JsonSchemaException.

Which means the benefit of seeing validation messages was basically lost. Make
this constructor private instead, and provide a static constructor for wrapping
inner exceptions. If the inner exception is a JsonSchemaException, it will be
unwrapped and returned by itself.

Signed-off-by: Francis Galiegue <fgaliegue@gmail.com>