Q: Why, in prelude.hpp, are there typedef's for SYMBOL, FIXNUM, and INTEGER?
A: Because they're all immediates (ie, not heap allocated). If when
   using a Symbol you had to use 'Symbol*', it gets visually confusing
   because you see the * there and assume it's a pointer to somewhere in
   memory. But because it's an immediate, that doesn't work. C++ lets you
   do this, just so long as you don't try to dereference 'this' in any
   Symbol methods.

   You'll notice that the Symbol and Fixnum classes don't have any data members
   declared. Again, this is because they're not actually pointers into memory,
   and thus can't have data members.

   So basically, it's to make them look "correct".

   As for INTEGER, thats because it might be a FIXNUM or a Bignum*, so I sided
   with caution and made it feel more like a FIXNUM.

Q: How do I add a new global? The comment at the top of globals.hpp confuses me.
A: Globals is a place where we're using a little C++ mojo. One of the principles
   of a garbage collector is that you have root pointers. Basically, objects
   that are at the top of the graph, that you move through to find all other
   objects.

   You'll see in globals.hpp the use of a TypedRoot<> template. This template
   assists with the management of those root pointers. All globals are also root
   pointers, so you'll see that all data members in globals.hpp are TypedRoots.

   To add a new global, look for the "Add new globals above this line" comment.
   Add the declaration of your new global there, say "TypedRoot<Class*> awesome".

   Next, find the "Add initialize of globals above this line." comment, and insert
   ", awesome(&roots)".

   This line registers the TypedRoot object with the list of roots, so that your
   object is kept properly handled.

Q: Do primitives always have to return a value?
A: Yes, every method in Ruby returns a value.

Q: When should a method be implemented in a header?
A: In the VM code, a few short, heavily-used methods are implemented this way.
   If you are sure that your new method meets these criteria, go for it.
   When in doubt, follow the style of the longer functions.

   In short, if you're not sure, don't put it into the header.
