Separate freeing and clearing mesh runtime data in a more obvious way. This makes it easier to see what data is meant to be cleared on certain changes, rather than conflating it with freeing all of the runtime caches. Also comment and reduce the surface area of the "mesh runtime" API. The redundancy in some functions made it confusing which one should be used, resulting in subtle bugs or unnecessary boilerplate code. Also, now bke::MeshRuntime is able to free all the data it owns by itself, which makes this area easier to reason about. That required changing the interface of a few functions to avoid passing Mesh when they really just dealt with some runtime struct. With more RAII semantics in the future, more of this manual freeing will become unnecessary.