Use PyOS_setsig() instead of directly calling signal() or sigaction().

This fixes the first half of bug #110611: the immediate exit when ^C
is hit when readline and threads are configured.

Also added a new module variable, readline.library_version.
diff --git a/Modules/readline.c b/Modules/readline.c
index a797d29..faa574f 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -447,19 +447,20 @@
 {
 	size_t n;
 	char *p, *q;
-	void (*old_inthandler)(int);
-	old_inthandler = signal(SIGINT, onintr);
+	PyOS_sighandler_t old_inthandler;
+	
+	old_inthandler = PyOS_setsig(SIGINT, onintr);
 	if (setjmp(jbuf)) {
 #ifdef HAVE_SIGRELSE
 		/* This seems necessary on SunOS 4.1 (Rasmus Hahn) */
 		sigrelse(SIGINT);
 #endif
-		signal(SIGINT, old_inthandler);
+		PyOS_setsig(SIGINT, old_inthandler);
 		return NULL;
 	}
 	rl_event_hook = PyOS_InputHook;
 	p = readline(prompt);
-	signal(SIGINT, old_inthandler);
+	PyOS_setsig(SIGINT, old_inthandler);
 
 	/* We must return a buffer allocated with PyMem_Malloc. */
 	if (p == NULL) {
@@ -493,10 +494,16 @@
 DL_EXPORT(void)
 initreadline(void)
 {
-	PyObject *m;
+	PyObject *m, *d, *v;
 
 	m = Py_InitModule4("readline", readline_methods, doc_module,
 			   (PyObject *)NULL, PYTHON_API_VERSION);
+
+	d = PyModule_GetDict(m);
+	v = PyString_FromString(rl_library_version);
+	PyDict_SetItemString(d, "library_version", v);
+	Py_XDECREF(v);
+
 	if (isatty(fileno(stdin))) {
 		PyOS_ReadlineFunctionPointer = call_readline;
 		setup_readline();