DOM sub_observers, extra observers for viewing emails, retrieve email_source

Introduced concept of sub_observers in the DOM watcher configuration.
Means only child nodes inserted below its parent observer node will be
observed for a match. E.g. viewing a thread, only want to watch nodes
being inserted into the thread dom node before firing off thread related
dom events (such as viewing a specific email) . Docs inline.

Added support into DOM watcher configuration for a 'selector' to be
specified in addition to a class making it possible to define the
matching inserted element that should fire the observer in a lot more
detail.

Added a view_thread observer for when a new conversation thread is
clicked on. Used sub_observer functionality to add observers for viewing
an individual email, and dropping down the menu next to the reply button
on an individual email.

Merged reply_forward and compose observers - this is basically the same
thing. Pass a type to the handler to identify which of compose, reply or
forward it is.

Added a new method api.get.email_source which retrieves the raw message
source for a specific email id from gmail.

Updated docs. TODO: Need to document the api.dom.compose object.