Make JsonSchemaTree an abstract class

The introduction of the enum allows for this; what is more, more methods can be
brought from implementations into that abstract class.

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