Rename "Value" to "TypedValue" to make things more explicit.
Keep track of the number of registers used in a function.

This makes it easier to initialize the data structures for analysis.
Allow TypedValue instances to represent non-constant values too.

This allows us to use this type to also represent values that aren't known
at compile time but whose type we know.
Calling a type should take an LLVM value to wrap.

Previously we called make_constant_data, but that makes this only useful
for types that have associated constants. Since only a small number of
types have literal syntax, those few cases can just call
make_constant_data directly.
Add a Poison value and type to represent the result of errors.

During analysis this will mark all of the code elements that are affected
by an upstream error so that we can exclude them from error reporting,
allowing the error reporting to focus on only the root cause.
Stub out an "add" implementation for integers.

This is really just to document the intended design for implementing
operations on types. It'll probably get tweaked some before it's actually
used.
Initial stubs for LLVM lowering analysis state.

Not complete yet. Just a checkpoint where the data model is established.