Use BytesIO/StringIO instead of temporary files

Okay, sorry for all the little pull requests. There's a few places where votables are created by writing to a temp file, and then passing the filename to `votable.parse`. There's one comment saying these files are closed on garbage collection, but that's only an implementation detail of cpython, not really a valid assumption for python in general. Pretty much any API accepting files will be fine with file-like objects instead of real filenames anyways.

With this, all the errors from running tests with `open_files=True` in python2 and python3 are gone.