TemplateFreeWorld - replacing compile time polymorphism with runtime pol...

...ymorphism
This could simply be `std::unique_ptr<transport> virtual create_transport(transport_type /*transport_type*/) = 0` and the compiler should enforce that this is implemented.