Solutions to Structure and Interpretation of Computer Programs (SICP) in Scheme, Clojure, Ruby and JavaScript