net/core: Initialize network services only after the stack
net/core: Initialize network services only after the stack

DNS is not part of L3, but as dhcpv4 or the net shell, it is a services
on top of the network stack. So let's gather all in a dedicated
function.

This also rework the order when starting the DNS service. There was an
issue for offload device: these would be fully initialized in
init_rx_queues() which was called after l3_init. l3_init had already
started dns: which would not be able to bind correctly, proving to be
fully dead afterwards. Instead, starting the dns at the very end
ensures that all is initialized properly from devices to stack.

Fixes #15124

Signed-off-by: Tomasz Bursztyka <ba81a3a719836727e6857ae83462b9f52ec41006@linux.intel.com>

nashif/zephyr,Vudentz/zephyr,nashif/zephyr,ldts/zephyr,Vudentz/zephyr,ldts/zephyr,galak/zephyr,Vudentz/zephyr,GiulianoFranchetto/zephyr,finikorg/zephyr,nashif/zephyr,zephyrproject-rtos/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr,galak/zephyr,ldts/zephyr,zephyrproject-rtos/zephyr,GiulianoFranchetto/zephyr,GiulianoFranchetto/zephyr,zephyrproject-rtos/zephyr,GiulianoFranchetto/zephyr,nashif/zephyr,ldts/zephyr,GiulianoFranchetto/zephyr,Vudentz/zephyr,galak/zephyr,nashif/zephyr,finikorg/zephyr,zephyrproject-rtos/zephyr,galak/zephyr,finikorg/zephyr,ldts/zephyr,Vudentz/zephyr,galak/zephyr,Vudentz/zephyr,finikorg/zephyr