This patch stores the done evaluation steps for an FCurve RNA path lookup inside the runtime of the FCurve.
This reduces the evaluation of fcurves. Multiple solutions have been tested including storing multiple
cache items at the end the simplest solution (single cache result) got the best performance.
This patch also introduces a more generic solution that can be applied to other locations (rna_access_cache.c)
Spring 020_02A.anim.blend went from 12.4 to 12.7 fps in AMD Ryzen 1700.
The current implementation uses a global lock as the building process during playback is most likely to be
performed from the main thread. The mutex is a just in case scenario. We might also want to remove the
mutex at all and make sure that the cache is populated on a single thread only.
There are still some clean ups to do before this patch will be send for review.
Before:
After:
The difference is that the lookup of the RNA_path in the drivers takes less time most noticeable in (BKE_animsys_eval_driver).

