Make accessing errors via [ ] operators act as expected

Given this mutation:

```ruby
class ManualErrors < Mutations::Command
  required do
    string :str1
  end

  def execute
    add_error(:str1, :validation, 'This is always wrong')
  end
end
```

If I forget to pass any input, and the validations fail:

```ruby
result = ManualErrors.run()

result.errors[:str1]  #=> #<Mutations::ErrorAtom:0x00000000d3adb33f ...>
result.errors['str1'] #=> nil
```

But when the error is manually added, it's reversed:

```ruby
result = ManualErrors.run(:str1 => 'inputinput')

result.errors[:str1]  #=> nil
result.errors['str1'] #=> #<Mutations::ErrorAtom:0x0000000001234567 ...>
```

This is very confusing. Subclassing `ErrorHash` from `HashWithIndifferentAccess` (instead of just from `Hash` should remove this confusion and make accessing errors more consistent.