Add functionality to detect and name oceans

Uses a queue-based 4-way flood fill and some basic name
randomisation (loaded from resource files). Cleaned up
some of the types and organisation as part of this.