3.0 exception

-  Merged `Exception` and `BaseException` into single class.

- Refactored `ExceptionRenderer`.
  - All template selection and error code coercion code has been removed from constructor and moved into protected methods called directly from `render()`.
  - Earlier with debug off for framework exceptions there was method, template and code values juggling which looked fugly. Now with debug off if there is a non `HttpException` generated simply a new `NotFoundException` or `InternalErrorException` instance is created to avoid all the jugglery.
  - The feature which allowed having a method for each exception type promoted non DRY code and is gone now. I didn't think it was overly useful anyway. Instead you can now override the `render()` or it's helper methods as required if you want finer control over the rendering.