Map printing/iteration now works.

Also fixed the shift/reduce problem by allowing
container assigments (i.e. c[x] = ...) to work for any
expression... e.g. `fn()["key"] = 42`... which obviously does nothing
useful. Things are still leaking memory everywhere since the garbage
collector does not yet actually collect garbage.