Report a proper error in case of malformed data type branches.
Fix a bug in the SurfaceSyntax printer.
New syntax for binding field names.

Now, "A { x:: a }" desugars as "{ x: term } A { x: (=x | x @ a) }".