Add a couple of function calls so that Ardour will perform some basic cleanup when the user exits

Up until now we were relying on various d'tors to do this cleanup for us. However, because we were calling 'exit()' (to terminate the program) those d'tors were never getting called. We should probably review the use of exit() as a termination strategy.