Handling bad request properly.
Not using poor quality URL encode.
More robust error handling.
Encode IPN data based on request from PayPal, otherwise
IPN will not work/there will be an encoding error. This
is better than simply encoding as UTF-8 as what the
data needs to be encoded as depends on the account settings.

We also have to set encoding on the request object in order
for Django to pick up that the encoding is whatever it is
as opposed to assuming it's UTF-8.
Merge pull request #9 from DjangoAdminHackers/master

Robustness fixes (PayPal encoding and bad request handling)