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 [?]): ?```

If you dislike `add' , you can just mark it as obsolete 
but do not remove it like that ... this would break existing code

the idea is .. mark a feature obsolete (include the year and month 2014/07 in the obsolete message), and then in one or two release, we can remove it without too much pain for users.