Make int("...") return a long if an int would overflow.

Also remove the 512 character limitation for int(u"...") and long(u"...").

This closes SF bug #629989.
diff --git a/Lib/test/test_b1.py b/Lib/test/test_b1.py
index 65285ee..9e6c8d5 100644
--- a/Lib/test/test_b1.py
+++ b/Lib/test/test_b1.py
@@ -435,10 +435,8 @@
     raise TestFailed, "int(%s)" % `s`
 try:
     int(s[1:])
-except ValueError:
-    pass
-else:
-    raise TestFailed, "int(%s)" % `s[1:]` + " should raise ValueError"
+except:
+    raise TestFailed, "int(%s)" % `s[1:]` + " should return long"
 try:
     int(1e100)
 except OverflowError:
@@ -468,9 +466,12 @@
 except ValueError: pass
 else: raise TestFailed("int('53', 40) didn't raise ValueError")
 
-try: int('1' * 512)
-except ValueError: pass
-else: raise TestFailed("int('1' * 512) didn't raise ValueError")
+try: int('1' * 600)
+except: raise TestFailed("int('1' * 600) didn't return long")
+
+if have_unicode:
+	try: int(unichr(0x661) * 600)
+	except: raise TestFailed("int('\\u0661' * 600) didn't return long")
 
 try: int(1, 12)
 except TypeError: pass