Completing the Effect structures/enums.

A lot of this came from Aaron's work, so blame him if it doesn't work. :P
Split Effect API into new header file