bound functions need a scope for params & a scope for the body

this allows them to eval their arguments using the scope of the line
being evaled, while evaling its body against the scope it's bound to

this means all functions need to accept two scopes, even though
they're typically the same