Refactor the lexer's string code

This makes it a vector to use vector code.
diff --git a/src/num.c b/src/num.c
index 81efb8a..d1b8989 100644
--- a/src/num.c
+++ b/src/num.c
@@ -860,7 +860,7 @@
   while (intp.len) {
     if ((status = bc_num_mod(&intp, base, &digit, 0))) goto frac_len_err;
     if ((status = bc_num_ulong(&digit, &dig))) goto frac_len_err;
-    if ((status = bc_vec_push(&stack, &dig))) goto frac_len_err;
+    if ((status = bc_vec_push(&stack, 1, &dig))) goto frac_len_err;
     if ((status = bc_num_div(&intp, base, &intp, 0))) goto frac_len_err;
   }