Extend js/Object and js/Array with numerous protocols.

Replace the macros like scope! and the ! helper with more idiomatic
code.
Improve error message