Make ObjCBoxedExpr less of a special case, teach the expression evaluator to handle it in general, sometimes descending through to its subexpr. Remove the code that called CheckForIntOverflow from outside BuildObjCBoxedExpr, leaving its only caller CheckCompletedExpr.
To make the existing tests continue to work, we also need to whitelist ObjCBoxedExpr as a top-level expression in CheckForIntOverflow. Ultimately that we shouldn't need to whitelist, but one piece at a time.
I believe this is unreachable: an ObjCBoxedExpr will always have pointer (or dependent) type; the former will be handled below and the latter should never be evaluated at all. (We might want a mode to recurse into non-dependent subexpressions of value-dependent expressions, but that should probably be a separate visitor.)