Pull out Blinn-specific functionality into its own BlinnDistribution class

Feature-Start: blinn-distribution