Improvements to setup.py

This PR contains the following:
* Moved most of the installation logic from `girder-install` to `girder.utility.install` where it might be more generally useful
* Added `girder.constants.STATIC_ROOT_DIR` as a standard place to store the location of the static root.  For the record, I still think we should make this configured option at some point.
* Now parsing the requirement files using a *more* stable `setuptools` function.  The pip version of this function doesn't work with older versions of pip (#461), and the [next release](https://github.com/pypa/pip/commit/7037443975ee5706ef829f14a52ac2fba7dbfff2#diff-279d603875c5a5a4d83228bb4cb65edfR15) of pip will break it as well.
* Added optional component install logic, `python setup.py install --web --plugins`.

In regards to issue #546, the `--install-option` flag is mostly [broken](https://github.com/pypa/pip/issues/271).  What this means is that
```bash
pip install girder --install-option="--web" --install-option="--plugins"
```
will work as long as all dependencies are already installed.  Otherwise, it will error out because the unknown flags are passed to the dependencies as well.  I am thinking it is okay to leave this in as long as we don't advertise it.  Anyone who is capable of finding it probably will understand why it doesn't work.  Also, if this [PR](https://github.com/pypa/pip/pull/790) ever gets merged, it will solve @ronichoudhury problem with the girder tangelo plugin.  I'm willing to take out the flags if anyone has an objection.

There is one other method I can think of to install optional components, that is to make them into standalone python packages.  This is probably the best way to go in the future, but it will take a lot more work to get it done.

Fixes #461.
Addresses #520 and #546.

The reason we should probably prefer % notation is because `format` is kind of dumb about unicode.

```
>>> s = u'\u2265'
>>> print '{}'.format(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' in position 0: ordinal not in range(128)
>>> print '%s' % s
≥
>>> print u'{}'.format(s)
≥
```

You have to call `format` on a unicode object in order to get a unicode result, whereas % works just fine.