Add comments to board.go, separate win conditions

The win conditions are now separated out, which makes them a lot easier
to grok and moves some of the ugly "var" statements out of there.
Implicit := is much nicer (/ more idiomatic?).

Also adds the SetValue() export. While technically unnecessary, I'm
moving the code to use this instead of setting it manually in case I
decide I want a different internal representation of the value. String
is, after all, a little brittle.

Still doesn't support diagonals.
Fix extra confusing range uses in board.go

This was caused by me forgetting that range returns both the index and
the specific instance. While unhelpful for creation-type loops, this
makes the normal loop a lot cleaner.

Still doesn't support diagonals.