Rewrite to allow multiple screens, screen options, and non-string widget types.

Apologies for the near total rewrite, but I needed a more robust constructor. This significantly changes the API, so if you accept this pull request you may want to bump the semver to `0.1.0` or `1.0.0`.