ENH: functionObjects: call execute on last time step
- old convention was that on last time step it would only call end() and not execute()
- however this meant that e.g. the functionObjectProperties file did not get written
- and almost all functionObjects were doing an execute() inside of end()
- new convention: call execute() on last time step, just before doing end()