ClojureScript re-write

Completely rewritten front end in ClojureScript.