Many fixes...

1. Correct types were chosen for the struct based upon the bitfield the original author selected. Unsigned long is guaranteed to be at least 32 bits wide. This resolves the issue described by the C standard as "If insufficient space remains, whether a bit-field that does not fit is put into the next unit or overlaps adjacent units is implementation-defined."

2. Corrected format specifiers for new types.

3. Used non-floating point calculations in coin-to-dollar conversions to prevent undesirable rounding/floating point inaccuracies.

4. Removed a tonne of unnecessary code, including some very buggy code. This fixed at least two known problems:
   * when char is unsigned, the conversion in the assignment in "while ((c = getc(f)) != EOF)" would cause the terminating condition to never occur; An infinite loop would cause stack overflow and probably segfault.
   * out in fcopy was allocated x bytes, and then a null terminator placed at the x+1th byte (lol), resulting in an apparent "stack smashing" problem.