First pass at Real Keywords(tm) in ClojureScript

Cleanup debug js output

Collapse nested ifs into a cond
Touch up Sean Grove's Keyword patch

Tweak analyzer/compiler bits and leave notes about what should be changed
in the near future. Changed to compiler so that the Keyword changes work
outside of advanced compilation, both for <= simple optimizations and
the REPL. Fix a bug around keyword as fns <= simple optimizations.

Add new compiler option - :optimize-constants. This is only enabled in
advanced optimizations or if explicitly enabled.

Remove remaining hacks around keywords as strings.

BREAKING CHANGE: add keyword-identical?. There is no longer any
guarantee that keywords will be identical, you must use
keyword-identical? Change the tests in array-map, hash mapss, and
defrecord to account for this change. Remove tests with bad assumptions.
Inline keyword?
Merge branch 'master' into keywords
reset constant-table if :advanced optimizations, :optimize-constants, or
explicit reset. Otherwise during incremental builds constant table can
easily get out of sync.