Refactor of Dataset and Feature Engineer to provide a unified API for multi-backend. In particular, this refactor introduces a unified dataset abstraction with novel feature engineer implementation.