[core] migrate to standard project layout so we can more easily add tests