Subtracts the base fee from the payer account for both successful and failed transactions. "Failed" transaction here is supposed to mean a transaction that would get included in a block with an error code, as opposed to one that just gets dropped.
Added some error logs to make it easier to tell where errors occurred. These are noops unless the user activates them with env_logger or whatever
Changed the transaction history to include failed transactions (sorry for putting this all in one PR)