More refactoring of the engine methods to use a reference. I've left the driver callback methods using pointers for now so there isn't an API break for drivers (since I can't test all the drivers).