Fix cassette context decorator nesting issues

Sorry for spamming you with pull requests.
This is getting kind of big (it looks works than it is, I promise) so just to make sure that we are keeping track, here is a list of all of the changes that are included in this pull request:

* Do all patching through mock.patch. This made it so that CassetteContextDecorators actually stack properly.
* Move context management of use_cassette into CassetteContextDecorator so that a separate cassette is created for each invocation of a use_cassette decorated function.
* VCR now passes a callable to CassetteContextDecorator (instead of passing the arguments for cassette creation) so that changes to the VCRs default configuration can propagate to functions that have already been decorated.
* Add before_record_response hook to Cassette and VCR classes. This is mainly for the purpose of scrubbing responses.
* Version bump (1.0.3 -> 1.0.4). Should this be a minor version bump instead?
* Remove contextdecorator dependency.
* Add mock and contextlib2 as dependencies.