spec.py new version, source_loader init version

why would it be redundant? If you ask why there is such function, the answer would be readability, both subpackage and spec do need to write their tags and the code is the same, so rather than having the same code for writing twice, I placed that part into a 'private' function, because _write_tags is not part of the public  API, however, as name mangling adds class name before the underscore '_', I had to call the parent class function, because you can't inherit mangled functions, right?