Write a bunch of docs.
Start sketching in the FFI.
"native" -> "foreign".
Allow empty blocks.
Fix a few GC bugs.

Adding a to a symbol table can trigger a GC, so we need to make
sure we don't do that while sitting on an unpinned object.
Start adding support for runtime errors:

- Primitives can now signal an error.
- An error prints a callstack and ends the current (and right 
  now only) fiber.
- Arithmetic operators error if the operand is not a number.
- Real error for method not found.
- Associate source file name, and method names with functions.
- Debug line number info for functions.

Unfortunately, this regresses perf on fib about 15%, mostly
because of the better checking in arithmetic ops.

There's still a bunch of clean up to do, but this is a big step
in the right direction.
Move object freeing over to wren_value.

That's where allocation is, so it makes sense.