Refactor response calls to remove duplicated logic

I'm not entirely sure I like that if you want a none result you still have to declare the ``response_result`` function and just return ``None`` in it. However I'm not sure it's a great idea to default to returning ``None`` either.

Anyone else have an opinion?
Could the BaseModel implement this method as a return None by default, and then only if a sub-class returns non-None would they override it?