Add type inference engine

This is a type inferrence engine that takes an FRB expression and the
types of objects in scope and makes a best-effort attempt at determining
the type of the expression.