make BooleanField more consistent with Python

BooleanField now obeys Python's bool() with one exception: if the value
is a string containing "false" or "0" then it evaluates false.