Overhaul Effect object for ease & flexibility.

The new system loads all shader files found in a specified folder and
makes a program out of those shaders. There's no need to manually
specify every shader file and list them all for compiling. Instead, just
a simple call to Effect.New() is all that's needed.