draft: Migrate Draft to use ORM
draft: Avoid ajax requests for setting up the draft

Drafts now are placed directly into the HTML response. The response contains
the draft information as well as the original content saved in the database
for the content being modified. The draft itself is placed into the redactor
box rather than the current content.

This patch also reduces some of the [Draft Saved] notices where there is no
content or the content has not yet been modified.
draft: Fix image uploading, pasting and dropping
Fix initial popup of [Draft Saved]

Instead, only show the box if the draft has been modified since initially
created / updated.
draft: Support arbitrary depth of draft field
draft: Fix creation of client drafts
i18n: Add concept of translatable content
i18n: Open custom data translations to a wider world
i18n: Make topics, SLAs, lists, list items translatable
i18n: Localize team and group names
i18n: Site pages are translatable
i18n: Implement system language management
Implement client l10n of new ticket forms
i18n: Default to system primary language
i18n: Make the translate widget show a flag

to indicate the primary language expected for translatable content
i18n: Make textarea inputs translatable
Add draft support for site page translataions
i18n: Access content templates are translatable
i18n: Save browser language on login

This will help if the user has "Browser Preference" selected as the
preferred language. When email correspondence needs to be sent to the user,
the browser_lang extra attribute can be used as a backup to to the user's
language preference in the event that the language preference is set to auto
(Browser Preference).
i18n: Send translated email correspondence