Fix indentation in nat_service generator
DRY out differ tests before adding more classes

In anticipation of adding the Nat and Firewall differ classes
(to handle Id fields), DRY out the ConfigurationDiffer and
LoadBalancerConfigurationDiffer tests to have a common set
of test cases that we can use to ensure all differ classes are
obeying the same basic set of rules.
Add NatConfigurationDiffer class to ignore Id

When new nat_rules are inserted, the resulting generator output
dutifully increments the Id value of NatRules that follow.

This creates a problem when comparing with ConfigurationDiffer,
since the rules after our insertion have not changed, bar their
Id value increasing in relation to the new rules.

This commit adds a NatConfigurationDiffer class which strips out
these Id values before comparison.
Add missing newline from coverage message
Add FirewallConfigurationDiffer class to ignore Id

(as per the NatConfigurationDiffer class in daebc340)

When new firewall_rules are inserted, the resulting generator output
dutifully increments the Id value of FirewallRules that follow.

This creates a problem when comparing with ConfigurationDiffer,
since the rules after our insertion have not changed, bar their
Id value increasing in relation to the new rules.

This commit adds a FirewallConfigurationDiffer class which strips out
these Id values before comparison.
DRY out the ConfigurationDiffer classes

Make ConfigurationDiffer the parent of all per-service differs,
since they are all sharing common behaviour, just altering
what they consider to be 'the configuration for comparison'
Merge branch 'master' into 64589182_id_param_diff
Do inheritance in a clearer way

There's no need for code to be repeated in every subclass. The only thing that really needs to change is what the unused field is.

The difference between this and what was there before is that the unused field is stripped from both local and remote whereas in the case of the Load Balancer, it won't be in the local. This doesn't matter though, as there is a test for whether it's present before attemptint to remove it.
Artefacts of the way inheritance was being done
Simplify method calls to what is required
Remove common differ cases from subclass tests

The looping through test cases is bad (this will be explained more fully in the next commit). Removing them from the subclasses. They will later be reimplemented.
Looped through tests are bad

Instead of failing, they just don't run if the circumstances aren't right. For example:
 - 0f29d677eca: one of tests wasn't running due to a very small typo
 - https://github.com/alphagov/vcloud-core/commit/ebd330587: the code they were testing is no longer present, so the tests just don't run; when I remove code that is tested, I expect the tests to fail.

This makes them fairly useless as tests. This commit reimplements the tests as actual tests. They only test the configuration differ file as this stage.
Rewrite config differ subclass tests as tests

Rather than as loops, as per 9883ea53ef2.
Make the config differ tests shared_examples

This will allow the subclasses to call the tests of the superclass without repeating all the tests. Also changed the name of the file to include to reflect what it now is.
Pass the type of Configuration Differ

So that subclasses are testing themselves rather than all just testing ConfigurationDiffer again. `?w=1` will help to see the changes in this commit as I also fixed indenting.
Make subclasses run the Config Differ tests
I've added a lot of tests here

So coverage is higher. I'm not entirely convinced by this, because the tests were all in one area - it's clearly not testing lines of code or paths through the code. However, this is the tool we are using for coverage at the moment so might as well make use of it.
Change method name to make purpose explicit
Merge pull request #25 from alphagov/64589182_id_param_diff

[#64589182] Ignoring Id parameter when diffing Nat and Firewall rules.