Scrap the ability to access context directly via interactor method calls

References: https://github.com/collectiveidea/interactor/issues/47
Change context API from hash access to method access

This changes the internals of the context from a SimpleDelegator
delegating to a provided hash, to an OpenStruct. Context values are
accessed via setter and getter methods. Unset methods return nil.

In Ruby 2.0 and later, hash access is still available but is not
explicitly supported.
Remove the activesupport test gem dependency
Use Ruby's idiomatic "call" method rather than "perform"
Remove success/failure convenience methods from the interactor instance
Change Interactor.call to return the context rather than the instance

This also introduces a similar class-level rollback method in order to
allow organizer rollback without needing to internally track and store
instances of called interactors.
Remove setup in favor of before/after hooks

The new hooks are not evaluated until runtime, unlike the old setup
method which was evaluated during initialization.
Refactor Interactor#call_with_hooks

This helps pave the way for "around" hooks
Move hook logic out into its own module
Add the ability to specify method names for before/after hooks
Raise an Interactor::Failure error on context.fail!

This allows the interactor to abort execution immediately.
Refactor the organizers-within-organizers integration test

Calling "call" on the class is more consistent with actual usage.
Roll back on failure and error during after hooks
Write more realistic integration tests

…including a failing test due to after hooks being run after failure.
Fix test failure with context failure being swallowed up in an organizer
Share rollback responsibility between the interactor and the context

The interactor is responsible for defining rollback behavior for every
interactor. The context is responsible for keeping track of which
interactors have been successfully called on it.

This greatly simplifies the rollback logic that was shared across
different types of interactors.
Track the interactor instance within each context rather than the class

Any internal state stored with the interactor instance will also be
available during that interactor's potential rollback.
Refactor the organizer code
Remove the class level Interactor.rollback method

…in favor of Interactor::Context#rollback!
Build out integration test cases for hook failures/errors