glsl_symbol_table: Add new talloc-based new()

We take advantage of overloading of the new operator (with an
additional parameter!) to make this look as "C++ like" as possible.

This closes 507 memory leaks when compiling glsl-orangebook-ch06-bump.frag
when measured with:

	valgrind ./glsl glsl-orangebook-ch06-bump.frag

as seen here:

	total heap usage: 55,623 allocs, 14,389 frees
	(was 13,882 frees before)
diff --git a/main.cpp b/main.cpp
index f56e6f6..dcd4b8f 100644
--- a/main.cpp
+++ b/main.cpp
@@ -29,10 +29,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-extern "C" {
-#include <talloc.h>
-}
-
 #include "ast.h"
 #include "glsl_parser_extras.h"
 #include "glsl_parser.h"
@@ -118,7 +114,7 @@
 
    state->scanner = NULL;
    state->translation_unit.make_empty();
-   state->symbols = new glsl_symbol_table;
+   state->symbols = new(shader) glsl_symbol_table;
    state->info_log = talloc_strdup(shader, "");
    state->error = false;
    state->temp_index = 0;