Added vim swp/undo files to gitignore for development.
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
Removed personal development gitignore items.
Allow context to autoclose the open file
Switched strings to use format interpolation and better error msgs.
Abstracted encoding types.
Added docstrings to all util methods/classes
Created abstract CassetteLibrary and new subclasses
Added docstrings to CassetteLibrary subclasses
Updated comments.
Added tests for cassette.utils and additional docstrings.
Fixed bug where filename was too big due to cassette name.
Refactored so encoder is more abstracted from CassetteLibrary.
Added docstrings.
More docstrings for tests.
Skip performance tests.
Updated comments with verbs.
Organized imports statements.
Singularization of the word Return
Abstracted generating paths.