Introduce a Transaction inteface and a DoubleTransaction class.

Introduce a Transaction interface and a DoubleTransaction class. The DoubleTransaction class is not yet complete. The DoubleTransaction should help us simplify some of the double-entry accounting logic. For example, it can decide what to negate and when to negate it and ensure the underlying stored transaction is not the same as what is displayed. This change has no user-facing impact.

Sorry, looks like there are a lot of whitespace changes. My IntelliJ settings must be different from yours.