API and library improvements

## Overview
- Use instance of {TYPE} instead of labels to take advantage of static checking.
- Improve converter abstraction and implementations to reduce the developper work.
- Remove dangerous once routines.
- Prefer the use of converters instead of custom codes for JSON_OBJECT and JSON_ARRAY conversions.
- Replace custom creation procedures with default ones.
- Update style, documentation and loop construction.

## Next pull-requests:
This pull-request prepare the next.
A final goal is to allow to use Contextual typing (see https://docs.eiffel.com/sites/docs.eiffel.com/files/expression_language_0.pdf) when they will be available. i.e.
```object (a_json: JSON_VALUE; a_type: TYPE [?]): ?```

This is a breaking change, we can add a new feature and then mark object as obsolete.