Fix up a bunch of problems with definedness analysis

Not sure how these didn't show up before...
Move binexp handling into the type-specific behavior

Before it was part of the (type-agnostic) AST-walker, which didn't make sense.