Change open to 'with open' and exception IOError to 'EnvironmentError'

Use 'with open' when opening/writing files
http://sdqali.in/blog/2012/07/09/understanding-pythons-with/
The advantage of using a with statement is that it is guaranteed to close the file no matter how the nested block exits.
If an exception occurs before the end of the block,
it will close the file before the exception is caught by an outer exception handler.
If the nested block were to contain a return statement, or a continue or break statement,
the with statement would automatically close the file in those cases, too.

Switch exception to `EnvironmentError`
http://docs.python.org/2/library/exceptions.html#exceptions.EnvironmentError
Since it is the parent of IOError, OSError *and* WindowsError where available.

+ Cleanup test_lib a bit, still needs work.
+ Applied whitespace PEP8 fixes to the files touched.