make keys() and values() return view objects. closes #2347
contains() should now be used for all is-element-of checking
has(d,k), for now, just does contains(keys(d),k), but is likely
to be removed or renamed haskey()