'pip freeze PKG' outputs the installed version of PKG and its dependencies

This pull-request is a proposal around "recursive dependencies listing":

* `pip freeze PKG` outputs only version of PKG (a subset of `pip freeze`)
* `pip freeze --recursive PKG` outputs versions of PKG and its (recursive) dependencies
* `pip show PKG` also outputs "Require recursive: " which contains PKG's recursive dependencies (not PKG itself)

My motivation (i.e. my use case) is to get a known good set of versions for a project.
As a developer, in order to get the known good set of versions of a project,
Given a Python environment (typically a virtualenv) where my project is installed,
Given I made sure project works in this environment (i.e. validated the "known good" set of versions)
Given the environment contains other projects and developer tools (such as bpython, pytest, tox, ...)
I want to get the versions of PKG and its dependencies only, i.e. ignore everything in the environment not required by my project.

An example... Let's install bpython, Sphinx and Fabric:

```console
$ pip install bpython Sphinx Fabric
```

`pip freeze` works as always:

```console
$ pip freeze
bpython==0.13.1
docutils==0.12
ecdsa==0.11
Fabric==1.9.0
Jinja2==2.7.3
MarkupSafe==0.23
paramiko==1.14.0
pycrypto==2.6.1
Pygments==1.6
Sphinx==1.2.2
```

`pip freeze bpython` shows only versions of bpython:

```console
$ pip freeze bpython
bpython==0.13.1
```

`pip freeze --recursive bpython` and its recursive dependencies, a.k.a. versions of everything related to bpython in the current Python environment:

```console
$ pip freeze --recursive bpython
bpython==0.13.1
Pygments==1.6
```

Same idea for `pip freeze Sphinx` and `pip freeze --recursive Sphinx`:

```
$ pip freeze Sphinx
Sphinx==1.2.2

$ pip freeze --recursive Sphinx
docutils==0.12
Jinja2==2.7.3
MarkupSafe==0.23
Pygments==1.6
Sphinx==1.2.2
```

`pip freeze bpython Sphinx` displays frozen versions for both bpython and Sphinx:

```console
$ pip freeze bpython Sphinx
bpython==0.13.1
Sphinx==1.2.2

$ pip freeze --recursive bpython Sphinx
bpython==0.13.1
docutils==0.12
Jinja2==2.7.3
MarkupSafe==0.23
Pygments==1.6
Sphinx==1.2.2
```

`pip show bpython Sphinx` has additional "Requires recursive: " items:

```console
$ pip show bpython Sphinx
---
Name: bpython
Version: 0.13.1
Location: /mnt/data/web/django-generic-filters/env/pip/lib/python2.7/site-packages
Requires: pygments
Requires recursive: pygments
---
Name: Sphinx
Version: 1.2.2
Location: /mnt/data/web/django-generic-filters/env/pip/lib/python2.7/site-packages
Requires: Jinja2, Pygments, docutils
Requires recursive: markupsafe, Pygments, Jinja2, docutils
```
This again might be personal taste...

I think this might be slightly more readable if you changed `installed[pkg]` to `installed.get(pkg)` -- then you don't need to catch `KeyError` so you can get rid of the `try/except/else`. E.g.:

```python
        dist = installed.get(pkg)
        if dist:
            for dep in dist.requires():
                name = dep.project_name
                dependencies.add(name)
                dependencies.update(get_recursive_dependencies(name))
```

I do often use the idea of [EAFP](https://docs.python.org/2/glossary.html#term-eafp), but in some cases I think it can be clearer to do explicit checks.