Tidying up Sip::Header factory

Making sure the factory is valid
Refactoring Sip::DoiRunners::AssignADoi

Keeping the levels of abstraction at the same level.