Full-text content syncing

Full-text content is now synced to the server and other clients. Up to
~500K of content is transferred with each sync, so multiple syncs may be
necessary. Downloaded content is written to temporary files and
processed on idle (currently 5 seconds), so synced content may not be
immediately available.

Performance will improve with API syncing and async DB in 4.1.

This also includes some other full-text tweaks, such as storing
text converted from HTML in cache files, which may speed up phrase
searching.
Don't truncate HTML file content in full-text sync

Also write a cache file for HTML files at index time
Fix index rebuild
Better handling of maxLength and HTML

- Don't truncate before HTML conversion
- Correctly calculate indexed chars and total chars
- Move HTML conversion code into one function
Order by clientDateModified DESC when getting content to upload

This way content from newly added/modified items will get uploaded
before content from older items.
Add pref to disable full-text syncing, and prompt existing users on sync

FT sync is enabled by default for new users and configurable in the Sync
prefs.

Also disable downgrades once full-text sync is enabled, since otherwise
someone switching back and forth between old and new versions could miss
full-text content updates.
"other computers" => "other linked devices"
Back up database before disabling downgrade
Localize full-text sync strings
Merge branch '4.0_fulltext_sync' into 4.0