Introduced visitors into datamodel and JSON converter

* New interfaces ValueVisitor and SnakVisitor can be used to avoid
casting objects of these types
* Renamed ConverterImpl to JsonConverter; restricted public interface to
methods for handling EntityDocuments; removed Converter interface as it
is not needed
* Split JsonConverter into several classes by extracting the respective
visitors
* Extracted constants from JsonConverter
* Renamed "jsonconverter" package to "json"
* Updated tests accordingly