Trackable#tracked_fields + fixes for Tracker#tracked_changes + Tracker#trackable_parent_class

@dblock apologies for bombarding you with pull requests. I'm integrating this gem into my app and gradually finding a more loose-ends.

This PR includes:

1) Add class-level `Trackable#tracked_field?` and `#tracked_fields` methods. This includes a refactor of logic to determine whether a field is tracked. There's two caveats here:

   * I understand Mongoid has a "freeform mode" where you don't need to explicitly define your fields. This commit builds a list of tracked fields based on the fields defined in Mongoid, so it prevents freeform fields from being tracked (I don't see any specs currently for the freeform case.)

   * Previously delete was tracking all fields, regardless of whether the user specified they should be tracked (I suspect maybe users want "Undo" on a delete to restore all fields?) I've changed this so that delete undo only restores the tracked fields.

2) Added some fixes and additional tests for previously added `Tracker#tracked_changes` and `#tracked_edits` methods, as there's a pre-existing hack described in Issue #69 which requires us to flip-flop the :from and :to values for the specifically for :destroy action

3) Expose the `Tracker#trackable_parent_class` method, which returns the parent class of its trackable regardless of whether the trackable itself has been destroyed.