Dispatcher buffer retention

If a dispatchers init_settings have changed and there are items in the
buffer, the buffer is copied to a temp_buffer whilst the dispatcher is
rebuilt and then copied back to the new dispatcher. Changed the way the
deletion of both listeners and dispatchers are handled so the they are
deleted and rebuilt in a single update settings loop.