CLJS-647: Evaluate expressions for js-obj keys

JS objects are constructed in three phases. First, an object is
constructed using all key-value pairs with string literals as
their keys. Second, object keys are set for the key-value pairs
with symbols as their keys. Lastly, remaining key-value pairs
are let-bound, evaluated, and their keys are set via the
let-bound gensyms.