Split to multiple classes, overridable shader

- wrapped into TextureReplacer namespace
- split into Builder, Replacer, Personaliser & Main
- reflective shader can optionally be given in a text file