return (t) => {
      if (t < 0.5) {
        return easing(t * 2) / 2;
      }
      return 1 - easing((1 - t) * 2) / 2;
    }
Makes any easing function symmetrical. The easing function will run
forwards for half of the duration, then backwards for the rest of the
duration.