big changes: add a lot of structure to output

Instead of outputting a flatish structure, we now support grouping like
the spec says we should.

Some sample output:
{:file-header
 {:version "2",
  :block-size "080",
  :record-length "80",
  :file-id "1",
  :creation-time "0600",
  :creation-date "051025",
  :receiver-id "11111",
  :sender-id "22222",
  :record-code "01"},
 :groups
 [{:group-header
   {:as-of-date-modifier
    "/                                             ",
    :currency-code "",
    :as-of-time "0000",
    :as-of-date "051022",
    :group-status "1",
    :originator-id "11111",
    :receiver-id "22222",
    :record-code "02"},
   :accounts
   [{:account-identifier
     {:summaries
      ({:funds-type "",
        :item-count "",
        :amount "+00000005555555",
        :type-code "015"}
       {:funds-type "",
        :item-count "",
        :amount "+00000003333333",
        :type-code "045"}
       {:funds-type "",
        :item-count "00008",
        :amount "+00000001333335/ ",
        :type-code "100"}
       {:funds-type "",
        :item-count "00002",
        :amount "+00000008888885",
        :type-code "400"}
       {:funds-type "/                     ",
        :item-count "",
        :amount "+00000002222222",
        :type-code "040"}),
      :currency-code "",
      :customer-account-number "0999999999",
      :record-code "03"},
     :transactions
     ({:text "DEPOSIT LOCATION",
       :customer-reference-number
       "Miami/                                ",
       :bank-reference-number "00011111111",
       :funds-type "Z",
       :amount "000000000222222",
       :type-code "175",
       :record-code "16"}
; etc.
}]}]}