Migrate to a native AST and Expr representation.
The original cel-go implementation was heavily based on protobuf definitions
for types, declarations, and expressions. While this was expedient, it has also
been cumbersome. With PR #568, the types and declarations were replaced
by Go-native structs. This issue tracks the migration of the Expr, SourceInfo,
and AST objects.
The motives for making this change are many:
- Performance
- Remove (most) hard dependencies on protobuf
- Allow for better interop between serialization formats and type systems