https://levelup.gitconnected.com/python-chess-efficient-move-generation-using-bitwise-operations-095a1d35da46