Add a new expression kind: `a as T` converts the value of the expression `a` of some type `U` to some other type `T`. The conversion should be backed by a trait implementation: need to consider doing either `T: From<U>` or `U: Into<T>`.