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/Python/bltinmodule.c b/Python/bltinmodule.c
index 1561a22..35536d9 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -130,11 +130,11 @@
 static PyObject *
 builtin_callable(PyObject *self, PyObject *v)
 {
-	return PyInt_FromLong((long)PyCallable_Check(v));
+	return PyBool_FromLong((long)PyCallable_Check(v));
 }
 
 static char callable_doc[] =
-"callable(object) -> Boolean\n\
+"callable(object) -> bool\n\
 \n\
 Return whether the object is callable (i.e., some kind of function).\n\
 Note that classes are callable, as are instances with a __call__() method.";
@@ -713,7 +713,7 @@
 }
 
 static char hasattr_doc[] =
-"hasattr(object, name) -> Boolean\n\
+"hasattr(object, name) -> bool\n\
 \n\
 Return whether the object has an attribute with the given name.\n\
 (This is done by calling getattr(object, name) and catching exceptions.)";
@@ -1666,11 +1666,11 @@
 	retval = PyObject_IsInstance(inst, cls);
 	if (retval < 0)
 		return NULL;
-	return PyInt_FromLong(retval);
+	return PyBool_FromLong(retval);
 }
 
 static char isinstance_doc[] =
-"isinstance(object, class-or-type-or-tuple) -> Boolean\n\
+"isinstance(object, class-or-type-or-tuple) -> bool\n\
 \n\
 Return whether an object is an instance of a class or of a subclass thereof.\n\
 With a type as second argument, return whether that is the object's type.\n\
@@ -1691,11 +1691,11 @@
 	retval = PyObject_IsSubclass(derived, cls);
 	if (retval < 0)
 		return NULL;
-	return PyInt_FromLong(retval);
+	return PyBool_FromLong(retval);
 }
 
 static char issubclass_doc[] =
-"issubclass(C, B) -> Boolean\n\
+"issubclass(C, B) -> bool\n\
 \n\
 Return whether class C is a subclass (i.e., a derived class) of class B.";
 
@@ -1856,6 +1856,9 @@
 	SETBUILTIN("None",		Py_None);
 	SETBUILTIN("Ellipsis",		Py_Ellipsis);
 	SETBUILTIN("NotImplemented",	Py_NotImplemented);
+	SETBUILTIN("False",		Py_False);
+	SETBUILTIN("True",		Py_True);
+	SETBUILTIN("bool",		&PyBool_Type);
 	SETBUILTIN("classmethod",	&PyClassMethod_Type);
 #ifndef WITHOUT_COMPLEX
 	SETBUILTIN("complex",		&PyComplex_Type);
@@ -1879,7 +1882,7 @@
 #ifdef Py_USING_UNICODE
 	SETBUILTIN("unicode",		&PyUnicode_Type);
 #endif
-	debug = PyInt_FromLong(Py_OptimizeFlag == 0);
+	debug = PyBool_FromLong(Py_OptimizeFlag == 0);
 	if (PyDict_SetItemString(dict, "__debug__", debug) < 0) {
 		Py_XDECREF(debug);
 		return NULL;