Shader Index Operator Improvement

Merges pataroose's index operator improvement for the Shader class with some adjustments.
Closes #109.