implements feature to list all gists

it works in this way : 

`gist --list` or `gist -l` : will check if user is authenticated or not
> if user is authenticated : will list all `public` and `private` gist urls with description also
> if user is not authenticated : warn user to login, using `gist --login` and exit.

it also takes one `optional parameter` as `username`
`gist --list abhshkdz` will list all public gists of user `abhshkdz`, it resulted : 
```
[public gists]
https://gist.github.com/7460904 : 
https://gist.github.com/7276887 : Generating a Url slug in PHP
https://gist.github.com/5916998 : Music Widget: http://cdpn.io/zvGqf
https://gist.github.com/5879343 : Sublime Text 2 Installation Instructions for Ubuntu 13.04
https://gist.github.com/4151814 : Self-updating list of my tweets
https://gist.github.com/4148037 : Source nvm + tab completion
https://gist.github.com/3940532 : Links Thread
https://gist.github.com/3325927 : Building up Hubot on Gtalk (deployed on Heroku)
```

@ConradIrwin @rking can you please see this, as it was discussed in issue #168 also
tell me if I need to do anything else :hand:
Oh, I see the problem. You should do something like:
```
opts.on("-l", "--list [USER]", "List all gists for user") do |user|
  options[:list] = user
end
```

And then inside the begin/rescue/end on https://github.com/defunkt/gist/blob/master/bin/gist#L126 you can do:

```
if options.key? :list
  if options[:list]
    Gist.list_gists(options[:list])
  else
    Gist.list_gists
  end
else
   # do normal gist stuff here
end
```

The advantage of raising an error is that then people can use gist as a library in their applications; if we just `exit` in the middle of running `Gist.list_gists`, then it's harder for other programmers to handle the error.