Unify serial close processing in a single function (close_serial),
make everyone else call that. This avoids a couple of cases where the
device would be closed and not removed from the devices_opened list,
leading to 'device is already in use' messages.