Clean up binding evaluation, distinguish between macros and functions, and allow for variadic functions. s.code's language argument is now optional.