There should be just one place that calls `setupterm()`. While refactoring the code I also decided to not make initializing the curses subsystem a fatal error. We now try two fallback terminal names ("ansi" and "dumb") and if those can't be used we still end up with a usable shell. Fixes #3850