Add custom error pages

Show custom error pages instead of throwing users to the mercy of the webserver. This lets you preserve or control what the user receives. Some 500 errors can have knock-on effects (like the missing menu seen below) since the dynamic content of the site can't load. DEBUG mode will ignore these pages and show the django fun pages instead.

Before:
![screen shot 2014-12-01 at 9 41 33 am](https://cloud.githubusercontent.com/assets/3044831/5247252/ecff127c-793e-11e4-91a5-5352965bf92c.png)
![screen shot 2014-12-01 at 9 42 50 am](https://cloud.githubusercontent.com/assets/3044831/5247256/ef5f813c-793e-11e4-9781-27e001c5807e.png)

After:
![screen shot 2014-12-01 at 9 42 13 am](https://cloud.githubusercontent.com/assets/3044831/5247257/f5206ae6-793e-11e4-9d9f-d5c3c310d9fb.png)
![screen shot 2014-12-01 at 9 43 10 am](https://cloud.githubusercontent.com/assets/3044831/5247283/f6c92b08-793e-11e4-9603-6125301213f7.png)