Add helper for adding new overloads

- Overloaded op's and pred's can now directly declare what type they
  support.  The helper uses this to reduce boilerplate when adding new
  overloads.  This should also presumably make adding new overloads less
  error prone.