Language scrambling/species selection window.

Reopening #7269 due to something cocking up with git's diff.

This doesn't implement the say() refactor that stops the string being generated multiple times, but it shouldn't be so bad to merge for testing. Optimization will be a pain.