Preprocess and validate targets when they're added as routes.

 * preprocess a target function so we save time when requests are made
 * validate a target function to show errors at start-up not on first
   request
 * also removed []string as an input type to prefer variadics