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.
Bump dependencies
Only specify major versions for travis
Keep all parameters when Wool tasks.
Added a module for cyclic buffers, with tests

The intension was to use this data structure in the recurrence combinators in Stream, but that is not directly possible due to the use of `withArray`.