Moved creation of visual studio clean task to live with the other tasks, and added some descriptions.
Hoisted some default implementations up to AbstractEncoder and AbstractDecoder, and added more test coverage.
Changed type definition.
Changed @RequiresInstalledToolChain to take a ToolChainRequirement enum instead of a string.