opAssign by definition is not pure
Remove the local copy of BoardStatus in the invariant

Get indexing is now typed properly to avoid conflict with the
fact that the object cannot be modified inside the invariant.
Use immutable instead of auto where possible
The piece bitboard properties do not need to modify Board
Avoid modifying the Board argument where possible
Merge pull request #52 from joichiro/mutability

Review the code to see where mutability could be reduced.