Make HTTPError pickleable

According to the [Celery manual]:

> A rarely known Python fact is that exceptions must conform to
> some simple rules to support being serialized by the pickle
> module.
>
> Tasks that raise exceptions that aren’t pickleable won’t work
> properly when Pickle is used as the serializer.
>
> To make sure that your exceptions are pickleable the exception
> MUST provide the original arguments it was instantiated with in
> its .args attribute. The simplest way to ensure this is to have
> the exception call Exception.__init__.

The class `ligo.gracedb.exceptions.HTTPError` does not follow
these rules, so it is not pickleable. Here is a demonstration of
that:

    >>> import pickle
    >>> from ligo.gracedb.exceptions import HTTPError
    >>> pickle.loads(pickle.dumps(HTTPError(404, 'foo', 'bar')))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: __init__() missing 2 required positional arguments:
    'reason' and 'message'

This patch makes `HTTPError` pickleable so that it can be properly
represented in Celery task stack traces.

[Celery manual]: http://docs.celeryproject.org/en/latest/userguide/tasks.html#creating-pickleable-exceptions
6 jobs for make-http-error-picklable in 3 minutes and 52 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Build
passed #134572
build:debian:jessie

00:03:30

passed #134573
build:debian:stretch

00:01:29

passed #134571
build:el7

00:00:58

passed #134570
build:tarball

00:00:26

 
  Test
passed #134574
test:python2.7

00:00:20

passed #134575
test:python3.6

00:00:21