Fix a leak.

Also add the CALLER_OWN annotation to the owl_zephyr_dotfile method.
Factor out adding a unique line to a file.

This is in preparation for using it in perl; we will eventually want to
push the I/O to a separate thread, and we already have this code, so we
might as well use it in perl.
owl_util_file_{delete,add_unique_}line in perl
remove a space
Make owl_util_file_add_unique_line return

It now returns the number of duplicates.  This is useful for figuring
out if a channel already existed.
Add a ~/.owl/.irc.channels file, persist channels

All irc channel subscriptions persist across reconnects.

irc-{part,join} now have a -t flag, which makes the channels not persist
across BarnOwl sessions.

irc-loadchannels loads persistent channels.  It does not unload existing
channels.

TODO: make it so that :irc-join commands in ~/.owl/startup don't result
in lots of error messages in :show errors.  This currently occurs
because BarnOwl errors whenever you try to subscribe to an already
existing subscription (in zephyr), and I reused the zephyr machinery for
IRC.