Add work-in-progress code for SeeC-Clang mapped values.

This work centers on an abstract base class Value, which acts as a unified
interface for querying values (either in-memory or in LLVM's virtual registers).

This class may be split to have other abstract children in the future (e.g.
ValueOfPointer, ValueOfStruct).

Currently, Value objects can only be created through the getValue() functions.
There are three variants: one for creating an "in-memory" Value for a given
clang::QualType at a given address, and two for creating Value objects for the
result of a clang::Stmt in a given seec::trace::FunctionState.

At this time, only the following value types are supported:
In memory:
 - clang::BuiltinType
In virtual registers:
 - clang::BuiltinType
 - clang::AtomicType
 - clang::EnumType
 - clang::PointerType

Also, when creating a Value for the result of a clang::Stmt, only RValScalar
mappings are supported. When the in-memory Value support is fleshed out, we will
support LValSimple and RValAggregate by creating in-memory Value objects based
on the address produced by the clang::Stmt.