Return a descriptive error message for controllers

- A better error message is returned when calling controllers
  with incorrect arguments.
- Real TypeErrors are not bubbled up as 500s

This is based off of a patch by Jeffrey Zhang:
    https://review.openstack.org/#/c/48843/

Co-Authored-By: Lei Zhang<zhang.lei.fly@gmail.com>
Change-Id: I0c043def9c025c18b4cd034640a467586f8cbcfa
Closes-Bug: #1149987
Merge "Return a descriptive error message for controllers"