Constructs a Node containing empty nodes in a row by column grid. A member can then be accessed using [n,m] syntax, but [n][m] accesses the element container; [n][m][1] is equivalent to [n,m]. This is done to maintain the style (width etc) of the subelements.
"""
function make_grid(rows::Integer,columns::Integer,width=800,height=1000)
Links the values of two observables by adding a listener. Optional arguments f and g specify transform of the value between the observables. If optional argument master=true all listeners of o2 are called if o1 is updated rather than just the value.
Example:
link(o1, o2, (x) -> 2*x, (x) -> x/2)
will ensure obs(o2)[] is always 2*obs(o1)[] and vice versa.
"""
function link!(o1::Observable,o2::Observable,f=(x)->(x),g=(x)->(x),master=false)