Added the impala package to the setup.py file
Added FloatVal and DoubleVal types
Finished numeric *Val types: boolean, tinyint, smallint, bigint
Add simple test to exercise DoubleVal, TinyIntVal and BooleanVal
Started work on Impala StringVal
Added functioning len(StringVal)
Progress with casts
TypeVar.lock() should check if it's already locked

I am trying to compile this function:

@udf(IntVal(FunctionContext, IntVal))
def test_impala_1(context, a):
    return None

infer.seed_return(IntVal) locks the TypeVar to IntVal, which is good.  However, when infer.build_constrain() is executed, it will see that the associated block should return a none type, and will lock it as none instead.  This seems like it might be a bug to me, because now we've lost the explicit return type information.
Finished numeric values, possible, including handling NULL and literals
Split impala extension into multiple files for clarity