Switch the script to a symfony/console script.

This gets everything into a more object-oriented approach which should
help simplify things as behavior gets more complex and variable.
Add an access_token option to override cached token.

This helps provide a way of giving the access token more programatically
(without relying on the file cache).  The token can now be specified via
the command line directly and the cache can be ignored completely.
Move getReleaseName() call out of buildRelease().

I think it makes a better split of logic to have buildRelease only
concern itself with combining the already formatted data.
Add capability for entering custom release name.

Sometimes you just want to specify the release name yourself.
Allow user to decline random release names and force regeneration.

Some release names aren't appropriate or good, so allow the user to
pick another.
Add a release_name option to configure release name via CLI.

Sometimes we want to programmatically specify the release name.
Extract Method: _submitRelease.
Prompt for confirmation before submitting the release notes draft.

This lets the user get one last chance to bail out before the draft is
sent to github.  It helps to make sure that everything is as it should
be (correct commits included, etc.).