core: split out hashing.go from board.go