Folded table allocating functions into constructor

Specified size is the initial capacity. All tables still start
as range values, but this still keeps the benifit of avoiding
multiple reallocations of the table when the ranges are realized.
Replaced as many macros as possible

Still using `#define`s for constant values due to less issues
related to how gcc determines const variables.

Checked assembly output which currently matches macro definitions
for `-O2` on gcc. Allows better debugging and generally more readable
function definitions.

Unfortunately the `vcstr` macro could not be replaced. It creates
a static instance of a dynamically sized struct based on the passed
c string. It's very useful, but appears to be impossible to move
to an inline function even with gcc's ridiculous optimizations. Please
let me know if you find a way.

As far as string representations go, decided against creating an
additional `cstr` type to remove the reference counting as this
convoludes var equality where different types can be equal. Also
decided against using `0` to indicate no reference counting as
actual counting occurs very often. Fortunately, the cstr macro (which
relies on gcc extensions) can place these strings in the data segment,
preventing the need to heap allocate. For embedded systems, this may
be able to be allocated in rom somehow. In the worst case, this function
can be mapped as simply a function which allocates strings on the heap.
Add const modifier to table variables and wrapper functions

Wrapper functions handle transforming var_t to tbl_t * with the
original functions using tblp prefix.

Additionally runtime checks for constant tables are performed using
the ro bit added to tbl variables.