Ensure cudf::ast::expressions api doesn't use detail types
Description
The public api of cudf::ast::expression required using cudf::ast::detail types which goes against the cudf programming guide. So we move the required types to use cudf::ast::expression into the public stable API.
Checklist
- [ ] I am familiar with the Contributing Guidelines.
- [ ] New or existing tests cover these changes.
- [ ] The documentation is up to date with these changes.
@robertmaynard does this need to get in anytime soon?
Lower priority now that we have marked all the detail namespace as exported. But still weird that cudf has public stable API that requires detail types.
I think we ought to rethink what interfaces are public and which ones are private. I think there's a lot of APIs that are marked as public because they need to be used by other parts of the code within libcudf, but they're not really intended for end-users.
I'm also starting to see a possible need for a public-ish set of classes/functions for users to build custom kernels or UDFs which may also relate to AST expressions too.