Got macros in c working, and cleaned up parse errors for () tokens

Getting macros working in c required a bit more work than I thought it
would but I've got things done and it's pretty clean. I initially did
builtin macros using the macro structure and using the similarity of the
function and macro structs to get things working.

Being as this made for code that would be really difficult to maintain I
changed things to use the function structure, I decide if somethings a
macro using the meta field and a _builtin_macro tag.

Most of the work was in getting the macros in prim.c and the elisp code
in generate_prims.el to generate the right code, but there certanly was
some work in eval.c