Finish the typer (almost, haven't checked against the spec yet)

nit: LValue?