Codegen cleanup.

Some of the duplicate code (type/obj predicates) are rewritten
using macros.

Let's consider adding define and set! now.
Bug fix: primop error#

error# was not adjusting the stack correctly. Fixed now.

To do next: all prim ops, string type, runtime facilities (read, parse, eval),
module system and macro, and etc..