Use _PyEval_SliceIndex to handle list.index() calls with
huge start and stop arguments. Add tests.
diff --git a/Objects/listobject.c b/Objects/listobject.c
index a70ac5f..b059420 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -1832,7 +1832,9 @@
 	int i, start=0, stop=self->ob_size;
 	PyObject *v;
 
-	if (!PyArg_ParseTuple(args, "O|ii:index", &v, &start, &stop))
+	if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
+	                            _PyEval_SliceIndex, &start,
+	                            _PyEval_SliceIndex, &stop))
 		return NULL;
 	if (start < 0) {
 		start += self->ob_size;