Fix issue analogous to #21 for records. Symbols aren't constant-folded
so this assertion would happen with the default config. Now does the
right thing:

// constant sym key, sugar
> (#a: "hey", #b: 10).a
"hey"

// constant sym key, no sugar
> (#a: "hey", #b: 10).(#a)
"hey"

// deref to let of constant--used to assert
> s = #a; (#a: "hey", #b: 10).(s)
"hey"

// show type discrimination works in deref-to-let case
> $t { s = #a; (#a: "hey", #b: 10).(s) }()
{ s = #a; (#a: "hey", #b: 10). }() : String
> $t { s = #b; (#a: "hey", #b: 10).(s) }()
{ s = #b; (#a: "hey", #b: 10). }() : Int

// deref to param--not constant
> $t { s => (#a: "hey", #b: 10).(s) }(#a)
ERROR <shell>[1, 9]: structure addressing argument s is not constant
> $t { s => (#a: "hey", #b: 10).(s) }(#b)
ERROR <shell>[1, 9]: structure addressing argument s is not constant
>