Add the 'bool' type and its values 'False' and 'True', as described in
PEP 285.  Everything described in the PEP is here, and there is even
some documentation.  I had to fix 12 unit tests; all but one of these
were printing Boolean outcomes that changed from 0/1 to False/True.
(The exception is test_unicode.py, which did a type(x) == type(y)
style comparison.  I could've fixed that with a single line using
issubtype(x, type(y)), but instead chose to be explicit about those
places where a bool is expected.

Still to do: perhaps more documentation; change standard library
modules to return False/True from predicates.
diff --git a/Include/object.h b/Include/object.h
index 347f9c4..a85905f 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -531,8 +531,8 @@
 #define Py_DECREF(op)							\
        if (--_Py_RefTotal, 0 < (--((op)->ob_refcnt))) ;			\
        else if (0 == (op)->ob_refcnt) _Py_Dealloc( (PyObject*)(op));	\
-       else (void)fprintf( stderr, "%s:%i negative ref count %i\n",	\
-		           __FILE__, __LINE__, (op)->ob_refcnt)
+       else ((void)fprintf( stderr, "%s:%i negative ref count %i\n",	\
+		           __FILE__, __LINE__, (op)->ob_refcnt), abort())
 #else /* !Py_REF_DEBUG */
 
 #ifdef COUNT_ALLOCS