Big-endian: Byteswap only the field contents when writing progs.dat

The previous code swapped not just the fields' contents themselves, but
also field positions within several of the structs, resulting in a
non-working progs.dat when compiled on big endian (ppc in my case).
Swapping on a field-by-field basis now.

Also:
* Addresses weird swap size requests (30+ bytes in one case)

* Take a guess at the right way to log a weird swap request before dying

* Fix swap array length scaling

* Rename the main swap function to reflect its native->little-endian
  purpose.  Figued that was okay because progs.dat is required to be
  always little-endian...

* Add a non-array version of the swap function for convenience
Oops, scale int64 count into int32 count for swapper.
Update per IRC peer review feedback

Restore the swap function's original name, remove convenience function,
use %u in log message, whitespace tweak.
Merge pull request #141 from CurrentResident/big_endian_swap_fix

Big endian swap fix