Fix WebAPIError.with_message, and add WebAPIError.with_override.

WebAPIError.with_message modified the main instance of an error, instead
of creating a copy. This led to pollution of the error instances. In
practice, Djblets and Review Board aren't bit by it, by this may change
over time. Now it creates a copy.

Since it's also useful to override headers, a new with_override function
has been added that takes message and headers. with_message now just
wraps this.
Use the correct executable when calling build-media.py

In setup.py, sys.executable contains the path of the current python interpreter
and one should use it when running a different script.

Testing done: On a system where the executable is /usr/bin/python2.
Reviewed at https://reviews.reviewboard.org/r/4632/