Async Support

This is a big pull for adding async support. #20 

Removes action as one of the attributes to check if an audit is different - #19

---

Under the hood, one of the big changes is using `Auditing#audit_cache` method to access the audit configuration. The `audit_cache` will check the Class' ancestry for audit settings. This allows layered configuration in Parent -> Child setups.

Additional helper methods were added:

* #snap - returns a snapshot of the audit attributes for the model, ignores Procs and serializes ActiveRecord instances.
* #save_audit - saves the audit

An async callback can use `snap` and `save_audit` to create an audit manually.