EMailFormatterHeaders cleanups.
EMailFormatterQuoteHeaders cleanups.
Make EMailPart and its subclasses extensible.
EMailPartHeaders: Add a "default-headers" property.

This will replace the headers API in EMailFormatter.  Need a more
permanent place for headers since EMailFormatter is too disposable.

Also add an ESettingsMailPartHeaders class, which binds the new property
to the "show-headers" setting with a suitable mapping function to filter
out disabled header names.
Add e_mail_part_headers_ref_print_model().

Returns a GtkTreeModel of header names and values and visibility flags,
built from the CamelMimeMessage.  The tree model rows can be reordered
and toggled prior to printing.

Also add e_mail_part_headers_is_default() as a handy helper.
Add EMailPrintConfigHeaders.

This splits the print dialog's "Headers" tab into a separate widget.

EMailPrintConfigHeaders takes an EMailPartHeaders and displays its print
model, which is a representation of all message headers (except subject)
with an on/off flag for each.  The headers can be toggled and reordered,
and the changes are written back to the print model.

During printing, EMailFormatterPrintHeaders uses the same print model
to determine which headers to show and in what order (except subject).

This approach is much saner than the old method, which was trying to
manipulate WebKitWebView DOM directly to toggle and reorder headers.
This approach also happens to work, whereas the old method did not.
EMailFormatterHeaders: Avoid EMailFormatter header API.

Use e_mail_part_headers_dup_default_headers() to extract specific
headers to show in the desired order.
EMailFormatterQuoteHeaders: Avoid EMailFormatter header API.

Use e_mail_part_headers_dup_default_headers() to extract specific
headers to show in the desired order.
EMailFormatter: Remove the header API.

Use the EMailPartHeaders API instead.
EMailParserPreferPlain cleanups.
Bug 701669 - Bad assumption in prefer-plain module

For messages with a base MIME type of multipart/alternative, we were
hiding text/plain subparts based on the number of alternate subparts.

This assumption of course broke on a message with the following body
structure and a Plain Text Mode preference of "Show HTML if present":

    multipart/alternative
        text/plain
        text/plain

Instead, note when we've actually seen a text/html subpart and use that
to decide whether to hide the text/plain parts.
Updated Galician translations
Add e_source_selector_update_all_rows().

Calls e_source_selector_update_row() for each ESource being shown
by the ESourceSelector, according to the "extension-name" property.
ECalShellSidebar: Update selector rows after restoring state.

Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal.  This will ensure the
appropriate ECalClients get loaded into the ECalModel.

This fixes the bug where opening a second Calendar window shows no
content until one of the sidebar items is fiddled with.
EMemoShellSidebar: Update selector rows after restoring state.

Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal.  This will ensure the
appropriate ECalClients get loaded into the ECalModel.

This fixes the bug where opening a second Memos window shows no
content until one of the sidebar items is fiddled with.
ETaskShellSidebar: Update selector rows after restoring state.

Call e_source_selector_update_all_rows() after connecting to the
selector tree model's "row-changed" signal.  This will ensure the
appropriate ECalClients get loaded into the ECalModel.

This fixes the bug where opening a second Tasks window shows no
content until one of the sidebar items is fiddled with.
EMenuToolButton cleanups.
Reimplement the main toolbar's "prefer-item" feature.

This fixes a bug in the old implementation where the application could
crash after a second shell window was created and destroyed, because a
signal handler with the destroyed shell window as the closure was left
connected.

But moreover this simplifies the implementation by using a property
binding plus transform function instead of juggling signal handlers,
and also adds code comments where things get a little tricky.

Removed (now unused) functions:

  e_shell_window_get_toolbar_new_prefer_item
  e_shell_window_set_toolbar_new_prefer_item
ECalShellView cleanups.
ECalShellView: Disconnect "prepare-for-quit" handler on dispose().

This is another source of crashes after creating and destroying a second
shell window.  The signal handler was left connected with the destroyed
shell window as the closure.