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.
Efficiency improvements, support for view_thread in preview pane & not (ref #87 live repository)

Different nodes inserted depending on if preview pane labs addon
enabled. Rework config & mapping so config can be changed after the
interface has been loaded which allows us to detect if we are in preview
mode or not.

Only define config etc once. Only fully start checking inserted nodes
after the interface has been loaded as the user can't interact until
then anyway - results in the initial interface loading quicker.
Revert "Efficiency improvements, support for view_thread in preview pane & not (ref #87 live repository)"

This reverts commit d577ae47d799fee3a11c3b762582b3eb97f8e284.
Fix view_thread for standard conversation thread view

Support for multiple DOM node classes to trigger an observer.

Allow both 'Bu' and 'Bs' nodes to trigger a view_thread event - Bu for
when preview mode labs addon is on, Bs for standard conversation view.
Infobox improvements & fix to api.dom.composes

Allow infobox method to be passed html (e.g. so you can link from an
infobox).
Bugfix to api.dom.composes (as reported in #89)
Added gmail.dom.email object & docs

New gmail.dom.email object used to abstract interation with viewing an
email. Can retrieve & update elements in the interface. Returned from
the view_email DOM observer instead of the matching element.

to be returned from view_
Added basic gmail.dom.thread object

New gmail.dom.thread object is now returned from the view_thread
observer. For now it just contains the basic dom method for looking up
the wrapper element, or a few other elements in the interface. Over time
we can add more methods to extend this.
Docs, removed debug

Docs for gmail.dom.thread, removed debugging
Docs, and fix to #96

Added few more docs around the observers & how sub-observers work.

Added a fix to #96 by ensuring callbacks have been bound against an
observer before attempting to loop through.
Typo fix in docs
Minor docs tweaks
merge conflict
Merge branch 'Zeald-master'