General way to add persistence to a class in Python
No time to do a proper review, but some quick notes:


There are no docstrings! How am I supposed to use your code?
Doesn't follow the Python style guide (PEP8): in particular, line lengths are too long, so we have to scroll horizontally to read it here.
You should use super to call superclass methods, otherwise your code won't play nicely with multiple inheritance.
This relies on original_class.__init__ taking one optional argument which is copied to self. This seems rather inflexible: it works for some built-in constructors like list but it is not very general. It would be better to leave __init__ alone and use a factory function to do the construction.
It seems clumsy to have to specify the names of all the methods that you need. Python has the tools (dir, __getattribute__, etc.) to avoid this.
Copying attributes from one object to another works for methods but not for properties.
It would be better to actually use the context manager protocol (__enter__ and __exit__) and not contextlib.closing, which requires the object to have a close method which might conflict with original_class.close.
Consider using three-argument type instead of making a class with the wrong name and then rewriting its __name__ attribute.
At the moment you write the object to disk after every change, which is costly. Better to postpone this until the object is finished with.
Consider saving the object via the __del__ method.
Test cases should be organized into unit tests so they are runnable via the unittest module.
Consider catching FileNotFoundError instead of catching IOError and then re-raising if the error code is not ENOENT.