Use Proton to generate score data
Add a simple cache in front of the Proton call

This is OK because the Proton spec requires referential transparency,
and it's necessary because subprocesses are slow.