first cut at change-data-outside-ichabod cuke

@barnabyalter @NYULibraries/hydra I've taken a first cut at the "change data outside ichabod" tests for user story 70857552. Would be great to get some feedback on this.

Not sure if it's good practice to change Ichabod data from within a cucumber "given" step, but I can't think of any other way to test this scenario. VCR cassettes recorded the transactions properly, and the tests pass.
@chrpr So I noticed that you use the language "revert" in the last scenario and that gave me an idea. What about using helpers to change the source file and then the data loader will always load the same file and we don't have to worry about persisting instance variables (although for the record in general I am not against that approach if it's the best solution):

    Given (/^I (change|revert)? the "(.*?)" source data in the "(.*?)" field to "(.*?)" for the record identified by "(.*?)"$/) do |method, source, field, data, identifier|
      if method == "change"
        FileUtils.cp(fixture_file(source, ".xml.new"), fixture_file(source))
      elsif method == "revert"
        FileUtils.cp(fixture_file(source, ".xml.orig"), fixture_file(source))
      end
    end

    And (/^I reload the "(.*?)" source data into Ichabod$/) do |source|
      Ichabod::DataLoader.new(fixture_file(source), source).load
    end

Then your helpers could live in a DataLoader module until the LoginFeatures helpers:

    def fixture_file(source, ext = ".xml")
      "#{fixture_dir}/#{source}#{ext}"
    end

    def fixture_dir
      Rails.root.join("spec","fixtures")
    end

That means your `new_batallions.xml` becomes `sdr.xml.new` and the other is `sdr.xml.orig`. And of course you'd have to change the features to match.

It might be worthwhile to change the pattern to be something like `battalions_sdr_sample` and so `battalions_#{source}_sample`, but I would leave towards reusable names if possible.