Convert WorldGenPluginLib into an interface

This gives additional flexibility and other implementations can be used transparently. 

This PR does not contain functional changes.