Full changelog:
- [refactor] Move TypedConstants to taichi/ir/type (2211) (by **Ye Kuang**)
- [refactor] Move ASTBuilder and FrontendContext to frontend_ir (2210) (by **bx2k**)
- [ir] [transforms] Added assertion that indices won't cause overflow under debug mode (2199) (by **Jiasheng Zhang**)
- [refactor] Move code away from lang_utils (2209) (by **Ye Kuang**)
- [refactor] Move type related utils away from lang_util.h (2206) (by **Ye Kuang**)
- [refactor] Add SNode::GradInfoProvider to isolate SNode from Expr (2207) (by **Ye Kuang**)
- [refactor] Separate SNode read/write kernels into a dedicated class (2205) (by **Ye Kuang**)
- [IR] Add an IR Builder with some basic functions (2204) (by **xumingkuan**)
- [test] Add a basic unit test using googletest (2201) (by **Ye Kuang**)
- [refactor] Make taichi/common self contained (2200) (by **Ye Kuang**)
- [ir] Generate yaml documentation for statement classes (2192) (by **xumingkuan**)
- [test] Add googletest as a submodule (2197) (by **Ye Kuang**)
- [test] [opengl] Avoid floor division cornor cases by adjusting test data (2191) (by **bx2k**)
- [Bug] [lang] Fix AST not being transformed inside ti.ndrange (2187) (by **彭于斌**)