text: Title: Improve error message when task function has wrong signature
  Body: When a user declares a function with the argument `products` (instead of `product`), the error looks like this:
  
  
  ```
  Error rendering task "get" initialized with function "get". Got unexpected arguments: ['product']. Missing arguments: ['products']. Pass ['products'] in "params"
  ```
  
  This is confusing because the user may end up passing `products` under the params section. But under this scenario, the user really meant to pass `product`.
  
  Solution: check the extra arguments, and see if there is one that is similar to `product` to detect typos, then modify the error message so it says something like:
  
  ```
  You are passing products. Did you mean product?
  ```
  
  We can use difflib to get close matches
  
  