IO: Reversed handlers configuration

Also added tests.

The first key for a handler is its name, and the subkey its type:

ez_io:
  metadata_handlrers:
    my_handler:
      flysystem:
        adapter: my_adapter
IO: Renamed available io handler types container parameter
IO: Made handlers semantic config extensible

Configuration creation & parsing for each handler is done by a ConfigurationFactory.

Those will provide the semantic config, and customize the created service.
They're also responsible for registering the handlers.
IO: Removed handlers tag + pass

The ConfigurationFactory is sufficient to know which handlers are available.