Apple apologizes with $29 iPhone battery replacements