Changed how behavior requirements are handled.

Behavior requirements now act like regular behavior code, except they
all happen at once, and return a passed value, or a value that explains
the failure. This is part of the AI overhaul.