Fix breed methods

See https://github.com/NetLogo/NetLogo-Headless/issues/3. I have a number of commits here because I wanted to show the development of the refactor. They are all squashable upon request. The StructureChecker refactor (77494d1) is only partially complete. Depending on how we want to go with the refactor, I could:
 1) remove it entirely
 2) pull it over to another branch
 3) finish it on this branch before merging in
When describing function types from `A` to `B`, the preferred notation is `(A) => B` (not `A => B`).  If you don't always wrap your parameter list types in parens, the Scala compiler can bite you auto-tupling nonsense.