Field type processing

This will resolve all of the possible field types, including their LLVM
IR type and C++ name. It checks for duplicate type names, undefined cell
types. unknown types, etc.

This resulted in some changes to the celldef format. In particular,
forward declarations are required before the use of any field type and
cell class bodies are now mandatory (as in C++)