Refactoring : avoid passing annoying en-passant parameter in constructor.
Use common policy to keep historical state in non-final fields initialized by package-private setter.
In future we may reinforce immutability by adding some Position builder