Add project structure and `.gitignore` files

Information about files that shouldn't be tracked were spread per-directory (including the root one).
Remove workflow-specific git ignore rules from `.gitignore`

They would better belong in a file set as the `core.excludesfile` for Git globally per-user.
Add piece files to `pieces/`

Users need at least some pieces files along with the repo to get an idea of what the program is capable of (by playing around with them), as well as to get an idea for how they're to be formatted.
Add `parse_args.py`

The module provides an API for parsing command-line arguments.
Add `parse_pieces.py`

The module provides a turn-key API for parsing pieces files and converting them into machine-readable representations.
Add `defs.py` and update `parse_pieces.py`

`defs.py` defines classes to be used by other modules. `parse_pieces.py` was updated to use them.
Add `solve.py`

The module utilizes `defs.py` to actually find solutions and yield them.
Add `write.py`

The module handles displaying solutions textually.
Add `main.py`

The module integrates all the other modules in the package into an executable script.
Add `README.md`

The file extensively documents the program, its status, and how to use it. It is formatted according to GFM.