Came up with a better api.

It's nonsense to mix and match abstract and instance
variables in a constraint.

So I've created an api that keeps them separate.
The function 'instantiate' bridges the gap between abstract
and instance... it allows instantiating entire
groups of vars and constraints simultaneously, which
is actually the only way that makes any sense.