NOTE: This update breaks backwards compatibility. Removed sender as a field to Publish. Added Queue methods that are a mirror of Publish but delay the sending of the event until after all handlers for the current event have been run.