Directory Playback and option for JSON encoding

Added directory playback and alternative json encoding.

Added T10251

The change significantly speeds up the reading from a large set of
requests/responses form disk. Added directory playback to cassette. You
can now specify a directory (that must already exist) to cassette as the
file input.

Also refactored cassette to use any generic file encoding (yaml, json,
etc). This can be now specified through the 'encoding' keyword argument
in the `cassette.play` and `cassette.insert` methods. Currently, only
supports `json` and `yaml`.

I ran some benchmarking on 10,000 requests with results here:
https://gist.github.com/anthonysutardja/61a1ceeaee02e3d8717c