core: implement data forwarding, hazard detection and stalling