bugfix(errors): Allow 404 and 405 errors to have message body

According to RFC 7231 (which obsoletes RFC 2616) all 4xx error messages "Except when responding to a HEAD request, the server SHOULD send a representation containing an explanation of the error situation, and whether it is a temporary or permanent condition." (http://tools.ietf.org/html/rfc7231#section-6.5). Section 6.5.5 which is specific to the 405 message does not negate this; nor does section 6.5.4 for the 404 message.

This change set updates the 404 and 405 messages to make the representation optional so developers using Falcon can decide whether or not to provide it. By default the OptionalRepresentation mix-in that is introduced behaves like the NoRepresentation mix-in if the developers does not provide a description, thus keeping the existing functionality intact (e.g no breaking changes in functionality).

While this change set only changes 404 and 405 errors, the default functionality for all errors presently using the NoRepresentation mix-in should probably be the OptionalRepresentation mix-in instead so that developers can choose appropriate responses for the WSGI applications.
Since new-style classes were introduced in 2.2 time frame (IIRC), I hope that's not true! Do you mean that the Falcon classes don't inherit from object or set their metaclass to type so that they're not new-style under Python 2 also?  I would definitely suggest that, and then super(DerivedClass, self).method() calls will work in both Python 2 and Python 3.  Only super().method() will work in Python 3 though.   (Ignore me if I'm spouting nonsense; I don't have time atm to look further at the Falcon code.)