William Foster (Medal of Honor recipient)