Add a virtual BuildClassDeclaration method to CSharpCodeBuilder.

This extensibility point needs to be an override and not a pure visitor due to how the class declaration is created (only 1 right way to write the class).

This enables https://github.com/aspnet/Mvc/issues/568

#76