[WIP] Audit mode specs

@tyler-ball Here's my work so far on unit tests for audit mode (I have another big file in flight, should be done tomorrow AM). What do you think so far?

\cc @sersut 
Control groups are really only stored in the class. We do call `#to_hash` on the `control_data` parameter, and that could fail if the `control_data` object doesn't implement `#to_hash`. We aren't doing any parameter validation in the `#to_hash` method tested here, so we really should be testing two doubled objects: one which responds to `#to_hash` and one which doesn't.

I think using `instance_double` makes the most sense in cases like this
```ruby
class Robot
  def initialize
    @vocab = RobotVocabulary.new
  end
  def acknowledge(name)
    return "#{vocab.random_greeting}, #{name}."
  end
end
```
so your spec tests might look like
```ruby
describe "Robot" do
  let(:robot) { Robot.new }
  let(:robot_vocab) { instance_double("RobotVocabulary", :random_greeting => "Hello") }

  before do
    allow(RobotVocabulary).to receive(:new).and_return(robot_vocab)
  end

  describe "#acknowledge" do
    it "greets the person" do
      expect(robot.acknowledge("Dave")).to eq "Hello, Dave."
    end
  end
end
```

I guess this is a really long way of saying that from the way this method is written, we don't seem to care about what the object is which is passed in as `control_data`. From that, it doesn't make sense to me to use `instance_double` here. 

If I were to use `instance_double` in relation to this test I would do so in a class that uses `Audit::AuditData` and pass it `instance_double`s of the class I would expect to normally be passed to it.