[WIP] Codegen errors

- [x] Remove duplication of interfaces
- [x] Fix fatal errors
@Ocramius I think not. Look. If I have a `__sleep()` method on a concrete class, and It's `abstract` the method is generated twice, raising a error of redeclared method.