casting from an anonymous struct (tuple or named) to a named struct
must now be done explicitly:
  var a = A {1} --ok
  var a : A = {1} --not allow, implicit cast
This change was made because previously the empty struct {}
was convertible to any other struct type, which could lead to subtle errors.
defvar desugar's to an assignment with allocvar:
var a,b = 3,4
becomes:
allocvar(a),allocvar(b) = 3,4
in the typed ast.
this should make it easier to desugar pattern matching on structs.