Add length check to Array contract

This change causes contracts to fail where the given array is shorter than the array contract. For example the following would have passed previously but fail after this commit:

Contract Num => [Num, Num]
def mult(x)
  [x]
end

Fixes #42.