Use G_DECLARE_DERIVABLE_TYPE for PurpleConversation and additional cleanups

The setters for PurpleConversation are kind of crappy because of the
conversation cache in the purple_conversations api, which we'll address at a
later time.

Testing Done:
Compiled and ran locally, parted a chat and just signed out to verify no new issues.

Reviewed at
# When turned on, this option causes gtk to select the contents of an entry field when it becomes focused.
gtk-entry-select-on-focus = 1
# Sets the font used by gtk
gtk-font-name = "Verdana 9"
# Controls the keybindings that gtk uses for text entry/editing/etc
# The "emacs" theme turns on things like:
# ctrl-a == move to beginning of line, ctrl-e == move to end of line, etc.
gtk-key-theme-name = "Emacs"
# The following section allows you to change the style of the conversation
# window widgets, log viewer widget, and request and notify window widgets.
style "imhtml-fix"
font_name = "Sans 10"
# Set the widget style for the conversation entry box
widget "*pidgin_conv_entry" style "imhtml-fix"
# Set the widget style for the conversation
widget "*pidgin_conv_imhtml" style "imhtml-fix"
# Set the widget style for the log viewer
widget "*pidgin_log_imhtml" style "imhtml-fix"
# Set the widget style for IMHtml input widgets in request dialogs
widget "*pidgin_request_imhtml" style "imhtml-fix"
# Set the widget style for IMHtml widgets in notify dialogs
widget "*pidgin_notify_imhtml" style "imhtml-fix"
# It is safe to remove any undesired settings from the following
style "my-style-name" {
# Change the color of hyperlinks.
GtkIMHtml::hyperlink-color = "#000080"
# Change the color of the nick in highlighted messages, e.g. messages containing your nick
GtkIMHtml::highlight-name-color = "#AF7F00"
# Change the color of the nick in received message
GtkIMHtml::receive-name-color = "#cc0000"
# Change the color of the nick in sent message
GtkIMHtml::send-name-color = "#204a87"
# Change the color of the nick in action messages, e.g. "/me likes pidgin"
GtkIMHtml::action-name-color = "#062585"
# Change the font of the typing notification in conversation history.
GtkIMHtml::typing-notification-font = "italic light 8.0"
# Change the color of the typing notification
GtkIMHtml::typing-notification-color = "#ff0000"
# Disable the typing notification
GtkIMHtml::typing-notification-enable = 0
# The following settings will change the behaviour in all GTK+ applications
# Change the cursor color
GtkWidget::cursor-color = "#0000FF"
GtkWidget::secondary-cursor-color = "#00FF00" #for mixed ltr and rtl
widget_class "*" style "my-style-name"
# This sets the expander size on a treeview to 0, which has the result
# of reducing the indent for items in the tree. This can be applied to the
# Pidgin buddy list to reduce the width of group and contact rows.
# With the recent (~2.0.0) buddy list changes this isn't particularly
# important anymore.
#style "my-narrow-tree"
# GtkTreeView::expander_size = 0
# And apply the style to the buddy list:
#widget "*pidgin_blist_treeview" style "my-narrow-tree"
# In Pidgin, you can set custom keybindings in your theme.
# Here is an example to follow:
binding "my-bindings"
# enter inserts a newline
bind "Return" { "insert-at-cursor" ("\n") }
# ctrl-s sends message
bind "<ctrl>s" { "message_send" () }
# shift-f1 toggles bold
bind "<shft>F1" { "format_toggle" (1) }
# alt-f2 toggles italic
bind "<alt>F2" { "format_toggle" (2) }
# Ctrl-alt-shift-f3 toggles underline
bind "<ctrl><alt><shift>F3" { "format_toggle" (4) }
# Ctrl-v to paste as plain text
bind "<ctrl>v" { "paste" ("text") }
# Ctrl-Shift-v for normal 'Paste'
bind "<ctrl><shift>v" { "paste" ("html") }
widget "*pidgin_conv_entry" binding "my-bindings"
# This lets you edit your Pidgin key bindings from within Pidgin,
# by hovering over a menu item and hitting a key combo.
gtk-can-change-accels = 1