Cleaning Up CFile

Earlier, I had made an attempt at this issue, but forgot to run tests against it. Now, they are passing all the tests.
That's fine. When an instance of one of the derived classes calls the method, then the one in the corresponding derived class is called (note that the method is virtual).

Please, put the
```
{
    SG_NOTIMPLEMENTED;
}
```

in the implementation (cpp files). IMHO, methods should be implemented in cpp files, not in the headers.