Starts the supervisor
-spec listener(atom() | {atom(), integer() | string()}) -> {ok, pid()} | {error, not_found}.
-spec listeners() -> [{{atom(), integer() | string()}, pid()}].
-spec start_link() -> {ok, Pid :: pid()} | {error, {already_started, Pid :: pid()}} | {error, {shutdown, term()}} | {error, term()} | ignore.