text-manager: cleanup channel reference counts

There is no point forcing dispose to be run on each channel, destroying the
hash table will drop our ref on it which will close it.

Fix a crash when disposing the manager with at least one channel open.
foreach_dispose() had as side effect to fire the 'closed' signal on the
channel calling on_text_channel_closed() which will remove the channel from
the hash table. But we are not allowed to modify a hash table while iterating
over it.

Gabble does it that way too now.