Make Fen an Observer of the Board

To avoid updating the fen string every time it's requested, make the Fen class an observer which only updates when the board changes.