Rough first stab at local var assigns

There's a lot wrong here. Need to fix!
Add local variable index on assign
Add end to end tests for variables
Separate assign from other operators

Assign is a special case when it appears in code, so having it as a
separate Expr type means we don't have to do a special case match on it
every time we look at an Operator