Implement first_blocked_space_from and _set_actual_move_cache.
Remove leading underscore from generate_actual_cache and generate_naive_cache: these are public API functions of Pieces.
Split _place_piece into _soft_place_piece and _hard_place_piece. Implement _soft_remove_piece and _hard_remove_piece.
Implement move_piece.
Write test skeletons for new first_blocked_space_from method.
Write further skeleton tests for first_blocked_space_from.
Implement surround_piece helper method for first_blocked_space_from tests.
Implement circle_piece helper method for first_blocked_space_from tests.
Add base exception and BoardIndexError exception classes.
Change imported exception name.
Remove default value for direction from first_blocked_space_from.
Begin to implement first_blocked_space_from tests.
Move exceptions.py to chessnut_exceptions.py to avoid namespace collision during development.
Remove mentions of _generate_naive_cache (leading underscore is incorrect).
Fix test_all_pieces not adding piece to board.