Delay authentication to handle commands that do not require it

* Move the auth to OpenStackShell.prepare_to_run_command() and skip it if
  the command's auth_required == False
* Default auth_required = True for all commands
* Do authentication up-front for interactive use as
  OpenStackShell.prepare_to_run_command() is not called

Change-Id: Id330092f242af624f430d469882d15f4a22f4e37