Return variable of universal size instead of error

Instead of throwing an error when constucting a *free* variable, construct
a variable with `universal` size.

Note that this changes the semantics to allow compilation of programs with
free variables. This is useful when Feldspar expressions are used in
another language, i.e. the Feldspar System Layer.