InsertUpdateDatabaseDestination: retain full details in exception when unable to connect

This helps a lot when setting up initial infrastructure
Engine::ETL: unify exception logging using a single central track_error method

This now accepts the full exception object and logs the available details, as well as delegating onto the defined error_handlers