modified io_.cleanse_names so that if a string is passed in as an argument, it returns a string instead of a list of strings
made a bunch of python 2/3 compatibility changes. I believe every thing should work on python 2.7+ and >3.2