member descriptor fields and two-pass rewriting

The first two commits are PRs #151 and #173. I kind of entangled them together in the subsequent commits, so I'm making just one PR for the both of them and for the fixes.

The fourth commit:
- adds the rest of the member descriptor fields types
- adds rewriting capabilities for all of them
- fixes the assembly instructions
- add some Makefile capabilities to have tests with extension modules (in `test/test_extension`) so that I can write a full test for the member_descriptor functionality.

I think it addresses all of kmod's comments for #151 except pulling in the v8 assembler. We should definitely do this, though :)
Also I added `movzbl`, etc. as actual functions, but I still have the clunky `MovType` enum as an alternative interface since it seems to be the easiest way to genericize the rewriter `getAttr` function. (I guess we could replace it with a member function pointer, that wouldn't be so bad...)

Finally the last commit fixes some of kmod's comments in #173. A few things I wasn't certain about the optimal solution (like how to represent the allocation of a range of scratch space for an array) so I left it alone (for now).
Seems like this is pretty much the right behavior now, minus the hardcoding of the "search path" -- maybe we should just do the right thing and search for these as part of the normal import resolving?  (not in this PR)