Moved table check for ro into tblp functions

Table pointers are passed around almost as much as actual
variables. Moving the check for const into the tlbp functions
makes it garunteed to be checked at the expense of some performace
loss due to increased checks. Since Bad Things(TM) will happen
if the tbl_t* is dereferenced with the lowest bit set it is very
important for this to be checked at every access.
Cleaned up garbage collecting semantics

The actual destruction of vars is internal to the garbage collector.
No one, in either C or V needs to access the destructors of types
directly. This lets us simplify the interface a bit and just pass
around void pointers instead of entire vars.

Note that metatables may wrap the destruction functionality, but
this can be handled in the `mtbl_destroy` function.
Made the tbl wrapper functions responsible for type checking.

It is now safe to call `tbl_lookup`, `tbl_assign`, and `tbl_set`
without insuring that the variable is indeed a table.