Add boolfunc._expect_vars method

Hopefully, this should simplify interpretation of the ubiquitous usage
of 'def foo(..., vs=None)'. The method handles the None/Variable case,
and verifies that the input is a container of Variables.
Implement pos/neg unate methods for Expression