Add skeleton shapefile.py.

shapefile_parser/shapefile.py
	-Add skeleton shapefile parser, with the three main necessary
	classes and command-line argument handling in `main`.
Add Shape, BoundingBox, _handleCommandLineArgs().

shapefiles/shapefile.py
	-Add `Shape`, `BoundingBox` classes.
	-Migrate argument handling code from `main` to a new function,
	`_handleCommandLineArgs()`, for modularity.
	-Replace `Reader` and `Writer` classes with `read_from_file()`
	and `write_to_file()` respectively.
Add _valid_filename(), skeleton read_from_file().

shapefile_parser/shapefile.py
	-Add documented `Shapefile._valid_filename()`, and
	`Shapefile.read_from_file()._read_header()` and
	`Shapefile.read_from_file()._read_records()`.
Add logging, shapefile-header reading.

shapefile_parser/shapefile.py
	-Add use of the `logging` module; add `_configure_logging()`.
	-Add code to read and parse a shapefile header to
	`Shape.read_from_file()`.
Add _unit_tests() with command-line flag.

shapefile_parser/shapefile.py
	-Add `_unit_tests()`.
	-Add `--test` and `--file` flags to `_handleCommandLineArgs()`.

test/test.shp
	-Add a shapefile to be used by `_unit_tests()`.
Add all Shape skeleton classes.

shapefile_parser/shapefile.py
	-Add skeleton classes for all shapefile shape-types
	(`NullShape`, `PolyLines`, etc.).
	-Add complete `__init__` definitions for all shape-types in
	"x, y space" (not "measured" or "x, y, z").
Add full Point class implementation.

shapefile_parser/parser.py
	-Remove existing shape class implementations, because they
	were incomplete (see next point).
	-Redefine the `Point` class with full documentation; add
	`Point.read_from_binary_string()` and
	`Point.write_to_binary_string()`.
Add MultiPoint class implementation.

shapefile_parser/shapefile.py
	-Add full, documented `MultiPoint` implementation, with
	`MultiPoint.read_from_binary_string()` and
	`MultiPoint.write_to_binary_string()`.
Add skeleton classes for all shapes.

shapefile_parser/shapefile.py
	-All Shapefile shape classes have fairly similar structures; add
	skeletons for all of them, to prevent repetitive copying later
	on.
Add PolyLine class.

shapefile_parser/shapefile.py
	-Add `PolyLine` class implementation.
	-Rename all `read_from_binary_string()` and
	`write_to_binary_string()` functions to `from_binary()` and
	`to_binary()`, for greater readability.
Add missing documentation to PolyLine, others.

shapefile_parser/shapefile.py
	-Add missing `Attributes:` section to the `PolyLine` docstring.
	-Add missing table-headers to all `to_binary()` byte-format
	docstrings.
Delete multi-spacial M/Z classes.

shapefile_parser/shapefile.py
	-Remove all multi-spacial classes (those that implement
	additional `M` and `Z` measures because they're fundamentally
	identical to the foundation `x, y` classes and are unnecessary
	to implement for a proof-of-concept).
	-Redefine the `PolyLine` class as `Polygon`, because they're
	essentially the same.
Add documentation and to_binary() to BoundingBox.

shapefile_parser/shapefile.py
	-Add a class docstring to the `BoundingBox` class.
	-Add `to_binary()`.
Add Shape class inheritance.

shapefile_parser/shapefile.py
	-Make all Shapefile shape classes inherit from the `Shape`
	class; add an `__init__()` to `Shape` which sets
	`self.shape_type` accordingly.
	-Add `to_binary()` to `NullShape`.
Complete Shapefile.read_from_file().

shapefile_parser/shapefile.py
	-Complete `Shapefile.read_from_file()` implementation.
	-Add `Shape.SHAPE_TYPES`, for easier referencing between
	Shape-type numeric constants and the appropriate classes.
Fix miscellaneous Shapefile.read_from_file() bugs.

shapefile_parser/shapefile.py
	-Fix an assortment of bugs in an up-to-now
	`Shapefile.read_from_file()`; the function seems to work
	properly, as tested against the output of a shapefile-parsing
	library.
Update unit-tests.

shapefile_parser/shapefile.py
	-Update unit-test values in `_unit_tests()` to reflect those in
	`test.shp`.

shapefile_parser/test/test.shp
	-Add a shapefile for unit-testing.
Fix pylint errors/warnings.

shapefile_parser/shapefile.py
	-Fix `pylint` style warnings and the bugs that it reported (in
	as of yet untested code).
Add write_to_file(); --help command-line flag.

shapefile_parser/shapefile.py
	-Implement `Shapefile.write_to_file()`, and fix bugs in all
	existing `Shape`-inheriting classes' `to_binary()` functions,
	which were untested up to this point.
	-Add a `--help` flag to `_handle_command_line_args()`, and
	robustify error-handling for incorrect command-line argument
	input.
Add m/z value exclusion to BoundingBox.to_binary()

shapefile_parser/shapefile.py
	-Add an `all_` parameter to `BoundingBox.to_binary()`, which
	allows the optional inclusion of a `BoundingBox`'s `m` and `z`
	values.