Bug 879411 - [Messages] Tapping <delete>/<backspace> removes the recipient to the left of cursor - r=gnarf

Signed-off-by: Rick Waldron <waldron.rick@gmail.com>

Closes gh-10195
Bug 878808 - [SMS] ensure the caret is visible when focusing the input area, r=gnarf37

Whenever the "Compose" area is focused or blurred:
 - the onscreen keyboard gets displayed or hidden, respectively;
 - the "Compose" area size changes;
 - its scroll position is reset to zero (scrollbar at top).

This patch adds a Compose.scrollToTarget() method to easily center a target (= element or selection range) in the Compose area container.  This method is used:
 - when the Compose area gets/loses the focus -- see the scrollMessageContent() call in the ThreadUI.resizeHandler() method;
 - when an element is inserted into the Compose area -- see the scrollToTarget() calls in the Compose.append() method.

Closes gh-10221
Re-factor Attachment to support audio and video
Begin correcting styling issues
Re-factor attachments to be responsive
Prevent premature revocation of attachment object URLs
Make attachments aware of their origin

This allows for specialized rendering of unsent attachments.
Improve Attachment API

Initialize with an options object, and re-factor "origin" string
attribute to "isDraft" boolean attribute.
Finish implementation
Update unit tests