rewrite SMTUtilities.invoke()

Fixes #127

This rewrite is much clearer and works much better, as any subset should
work, although the get method doesn't allow this. It also has almost no
overhead compared to the old method which seemed to be 66% of the speed
when using reflection.