Use a typedef for monetary values

Replaces int64_t with a typedef in all monetary contexts.

See #4067 for a more thorough description of this patch and associated context.
That... is a fine question. I swear at one point during the rebase I was getting out-of-order initialization warnings, so I switched it. But looking at the diff, the prior ordering is obviously correct. Thank you for catching it.

I've pushed a new squashed commit that reverses that one hunk.