Several cleanups:
- Flesh out the README
- Make the interface a little easier to use
- Add some examples
- Add some (sparse) documentation for public components
- Mark the `FinishReason` and `Engine` enums as non-exhaustive so new members can be added in the future without breaking backwards compatibility