Raise exception if type variable shows up in codegen.
TypeImplementation.get_llvm_constant gets builder.

Continuing our mission to avoid directly importing llvm anywhere except
the codegen module, we provide the builder here. Most of the time this
will just use builder.consts, but may also use e.g. builder.types for
constants whose values require an explicit type.
FunctionTemplate type implementation skeleton.

Once the preprocessor is more fleshed out, we should eradicate all
mentions of these before we do final codegen, but when we're doing
compile-time function evaluation we permit these to be passed around for
metaprogramming purposes. Thus this represents our first example of
exposing a PyObject* pointer into LLVM land so that we can fish it back
out later if e.g. a compile-time function returns one of these.