Throw different exceptions for missing argument / method not allowed

One common coding style in python is EAFP, but currently tornado raises the general HTTPError exception on various places and its relative hard to distinguish on higher places why the exception has been thrown. It would be really helpful if different exceptions would be thrown, so this patch introduces MissingArgumentError and MethodNotAllowedError so you can easier catch the specific exceptions.