Support for DOM actions (including config for compose and load)

Added 'load' action which detects when gmail interface has loaded. Also
a generic interface to monitor configured DOM actions. Observers all
inserted dom nodes and fires events if elements match configured
observers
recipient_change and reply_forward observers

Added DOM observer for when someone beings to reply to or forward an
email, and an observer for when new recipients are added to 'To', 'Cc'
or 'Bcc' fields for any email being written. This observer also passes
an object of all email addresses the current email is addressed to
DOM compose object

Create new DOM 'compose' object which has methods for interacting with
the compose window.

api.dom.composes should return instances of this object.
Before, on and after events

Initial implementation of before, on and after events. Also moved dom
observers out into a new method api.observe.on_dom to clean up the
api.observe.on method which is already carrying extra code to support
backwards compatibility.
Backwards compat for after events
Few bugfixes

* Ensure action[map] is actually defined to something before checking
for bound events.
* fire on events rather than before events twice
* correct reference to bound method inside xhr onreadystatechance
'Before' observer write ability, stabilise

* Before observers can now modify body args & have these modify the xhr
request (e.g. change the subject prior to sending, add in cc field etc)
* Fixed file uploading & added upload_attachment event in the process.
* fix after events by correctly checking binding. Change order to bind
prior to sending xhr
* Code cleanup (comments, standardising coding style)
Docs update

Updated docs to provide a brief overview of all new methods, and updated
functionality of existing methods
Merge pull request #67 from Zeald/master

* Added 'before', 'on', 'after' triggers for gmail.observe.
* Ability to manipulate XHR request prior to send for 'before' triggers.
* New 'upload_attachment' event
* Added new extendable DOM observers to check for a few interface changes
* Added new gmail.dom.compose object which provides methods for interacting with the compose window
* Updated docs to reflect new / changed methods