Utility-based Perturbed Gradient Descent: An Optimizer for Continual Learning