Replaced references to self.error in the Shell class to print() statements. Shell.execute() now handles the return code from the context's setup_io() call. In the case that setup_io() returns an error, Shell.execute() will print an error message to stderr, reset the context's IO (reset_io()), and return 1 from Shell.execute (error).