Instances of ArrayList<Byte> replaced with ByteArrayOutputStream (while writing) or byte[] (while reading).
Removed count field from HexFile.
The areas list now uses a Tuple2 class.
Input stream parsing of HexFile is now in HexFileParser. The objective is to separate file input, file output, programmer input, and programmer output in an appropriate fashion.
DeviceDetails get their own inner class for now.
Virtually all of HexFile having to do with OutputStream is now in HexFileSerializer.
DeviceDetails is now in its own file.
Long overdue typo fix concerning forced calibration and reserved range; see programStartToReservedStart().
Format property is now properly encapsulated.
Most usages of ProgrammerPort from HexFile are replaced with ShortSource or ShortSink.
IntRange intersection machinery renamed for clarity; returns an empty range instead of null for non-intersection.
Several exceptions moved to their own files.