Rewrite to avoid passing exceptions around

Cmdliner and Lwt both tend to be easier to use if success/failure is
passed around via return values instead of exceptions. Each command now
returns a Spotify_commands.command_result and (hopefully) won't throw
any exceptions.

Signed-off-by: John Else <john.else@citrix.com>