Okay, I tried with your project and got the same error you are getting. I then looked into the project itself. The project organization kind of complex to me :(. So, I created a greatly simplified visual studio project just using your C# file inside the Tools folder (SleeperTool.cs). I can use this tool in Desktop and am able to publish it to ArcGIS Server and can consume the service without any error.
I have attached my project.
One question, what is the purpose of the AbstractGPTool class? Cannot you derive your SleeperTool class from IGPFunction2 directly as you did for GPFactory class where you derived the class from IGPFunctionFactory?