Move user-visible string definitions to the proper header

These should not have gone in the plugin configuration header in the first
place.
Have the size pref handlers determine orientation using the Buddy List

This is one step toward compatibility with my attempt at a conversation tiling
plugin.  The conversations' pane will be another GtkPaned when it is split, so
this now uses the untouched Buddy List's pane instead instead of the notebook
from the conversation window.
Pass the Buddy List as signal data instead of attaching it to the widget

There is no sense in associating additional pointers to the paned widget when
its signals have unused data pointers.  For consistency with the disconnect
functions, this also switches to g_object_connect instead of g_signal_connect.
Locate the Buddy List menu bar using menutray instead of main_vbox

This should hopefully be more future-proof and less error-prone than assuming
the menu bar is in a certain position as a child widget.  It's also shorter.
Add a fallback option to the conversation placement function

If the conversation placement function is called while the Buddy List is not
fused with a conversation window, lots of pain would result.  This will now use
the "last opened window" placement function (the Pidgin default) if the Buddy
List is not merged.

I didn't realize that the placement function is still used even when the plugin
is disabled (despite deregistering everything).  That oversight probably caused
lots of problems for anyone trying to disable the plugin without restarting.
Be consistent with the dummy conversation function interface

The initialization function wasn't abstracting accesses to the dummy tab's
structure like the others.  This is really a cosmetic change to standardize.
Refactor the convenience functions for storing pointers on a Buddy List

Normally, this type of thing should be in real functions.  However, seeing dual
namespace prefixes per call was driving me insane, and I did not want to
introduce string manipulation code to adjust the reference names.

Side note: These can now be called with either the Buddy List or its merged
conversation window for accessing the same data.
Explicitly remove the dummy conversation from its window before freeing

This is to avoid any scenario where the conversation window could reference the
pointer to freed memory.
Define and use a widget replacement function

The widget replacement function will preserve the widget's position among its
siblings and all of its child properties (from its parent container).  By using
this instead of directly adding widgets to containers, most of the theoretical
conflicts with other GTK plugins should be avoided.

Only widgets in a GtkBox or GtkPaned parent can be replaced for the moment, but
I haven't encountered any other parent classes for the relevant widgets anyway.
Preserve the original conversation window for when the windows are split

The conversation GtkWindow should now remain hidden during the entire time the
plugin is enabled, rather than freeing it immediately.  This window is simply
reconstructed from its old parts and displayed when the plugin is disabled.  It
should automatically destroy itself if the plugin is disabled while there are
no conversations open in it.
Clear message notifications when the Buddy List window is focused

This works by synthesizing a focus event for the conversation window itself, so
anything important that could be added to the Pidgin focus event handler in the
future should also be executed here.