Refactored and documented StudentMaterialSelector

Closes #480