Only save drafts when edits have happened in body

Closes: bgo #724911
Fix scrolling to the top on new messages

This introduces the possibility of reentrancy, which was guarded against
before.  It seems harmless, though.  Regardless, we'll keep our eyes
peeled for any issues related to it.

Closes: bgo #720712
Replace slashes and NULs with _ in attached filenames

This ensures we can't, say, overwrite someone's .bashrc file by sending
them an email.  It also fixes errors where Geary couldn't handle
attachment filenames that contained slashes.

Closes: bgo #714549
Updated Brazilian Portuguese translation
Use path, not URI, when attaching files in mailto

Closes: bgo #713865
Clean up mark as read/unread star/unstar options

Mark read/unstar always operate on all messages in the selected
conversations.  Mark unread/star now work the same way everywhere: it'll
mark each selected conversation's latest message in the current folder,
falling back to the latest message period for folders like the search
folder where nothing really lives.

The individual mail operations available in the conversation viewer are
unaffected, as they always just operate on the one message.

Closes: bgo #714008
Don't remove folders when listing throws errors

We're seeing a bug where under certain conditions like a flaky internet
connection, Geary will decide you don't have any remote folders and
simply remove them all locally.  What's probably happening is we're
getting an error and ignoring it.  Since we don't know what the true
error is, this patch simply adds some logging for that case and sets a
flag so we don't run the delete folders logic if there was an error.
Once we get a handle on what's really going on, we can implement a more
surgical fix.

Closes: bgo #726049
Expand quote rollup button to width of quote: Refs bgo#724342

Removing the padding so the button is the same width of the quote
makes it look more like the entire quote block is rolling up/down
with the button.
Update help docs

Closes: bgo #724082
Closes: bgo #725618
Closes: bgo #724081
Closes: bgo #720625
Initialize opening_monitor in local folders

Closes: bgo #725850
Updated Ukrainian translation
Don't allow archive from spam

Closes: bgo #714546
Default to STARTTLS in SMTP

Closes: bgo #714882
Fix a number of database hiccups

1) Use docid instead of id in search table.

We had previously included an 'id INTEGER PRIMARY KEY' column in the
MessageSearchTable, assuming it would get the same rowid alias treatment
as it does in non-FTS tables.  That assumption was wrong: it was being
created as a FTS column.  This fixes it so we use docid everywhere.

To fix the old incorrect docid values, we simply blow away the search
table and let the natural search table population process, which now has
the correct docid insertion code, fix the problem.

This also removes the id column from the search table creation SQL, but
this will only affect new users.  Upgraders will see an empty, vestigal
id column in their search table.  Since SQLite doesn't easily let you
remove columns, it's just easier to ignore the column than go through
all the work to fix it.

2) Do as many rowid lookups as possible in batches, instead of doing
them individually in loops.  This speeds up working with large sets of
email.

3) Rejigger indices on the MessageLocationTable to make certain queries
faster.  This creates a new covering index in particular for the email
prefetcher, which previously had to sort using a temp table.  The new
index should work in the general case too, as we should never be looking
at ordering without folder_id (and since folder_id comes first, it works
as an index on just folder_id, too).

4) For bonus measure, log all slow queries (> 1s execution time) to
debug output.

Closes: bgo #725929
Unneccessary dconf updates on window move

Writing the window_{width,height,maximized} variables triggers
a dconf database update. This is an expensive operation as
dconf writes down a full copy of the database and renames
over the old one. dconf does not check for unchanged values.

configure_event() is called for every pixel of a window move,
and writes the window_* variables - those do not change during
a move. Check by running
"dconf watch /org/yorba/geary/" and moving the window or just
listen to the hard disk grinding.

This patch checks if the values have changed before writing
them out, which fixes the issue and provides a
disk-grinding-free window move experience.

Closes: bgo #724953
Don't crash when renaming account nickname: Closes bgo#726277

"sidebar-name-changed" signal was not disconnected when dropping
a Sidebar.Entry from the Tree, meaning that if the Entry was still
ref'd and its name changed, the Tree was attempting to update an
Entry it did not hold.
Symbolic icon for Remove Account? warning dialog: Closes bgo#726279
Don't show Mark as Unread when it'd be a no-op

Closes: bgo #726274
Prevent GTK warnings when creating new account: Closes bgo#726269

The code for distinguishing between a new database and an existing
one being upgraded was faulty, causing the progress monitor to be
started/stopped when it should've have been.
Correct default SMTP port to the submission port

Closes: bgo #726296