`surface` methods get too much use, move into the API

Created by: benfry

We've been surprised at how much frame.setResizable() and frame.setTitle() and others are being used, and we should make them into real API.

The switch from frame to surface between 2.x and 3.x was bumpier as a result.

Need to clean this up and get better behaviors for all of them:

  • setSize() is erratic across renderers
  • setResizable() can we make this a one-time operation in settings()?
  • setTitle() is often used to output the fps of an app (a terrible idea, but there we are) so needs to happen at any time (or limited to settings() to prevent that usage)