Refactoring to give .fit a more sensible signature.

  fit methods now take parameters such as weights and offsets that
should only be known at fit time.  Validation method factored into
multiple small mathods to help with this.