It was impossible for drivers to use shape key properties, modifiers generate a new mesh. After mesh evaluation the shape keys are no longer necessary, and because of this the `key` pointer was not copied. As drivers work on evaluated data, however, they do need this `key` pointer. This commit makes the `key` pointer available in evaluated meshes, but this is somewhat dangerous. There was an explicit reason why the key on result was kept at null pointer: to have the evaluated mesh in a consistent state. Assigning this pointer makes it potentially inconsistent, as the evaluated mesh and the original shape key may have different topologies. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7785