support update idempotency for FirewallService
support diff for all available services
remove redundant line
fail fast on missing envvars in EdgeGateway integration test
DRY: remove temp config files
DRY: simplify update/diff input file setup
DRY: remove repeated creation of same initial firewall config
Clarify name of firewall input file
highlight that tests are run sequentially maintaining state
Remove NatRules Description handling.

Discovered NAT rules do not store Description

Despite the 5.1 API schema suggesting that NatRules have a Description
element, testing against the API is highlighting that the description
is not stored and hence not returned.

Removing from our implementation as a result.
clarify & fix idempotency logic in update()

* we were not skipping services that were not specified
add an expectation on FATAL test message

... so that we do not see confusing output
clean up test output
Remove potential for test input file name collision

If generate_input_yaml_config was called too quickly in succession,
the output file name would collide with the previous run.

This commit removes this potential by using the (base) filename of the
input file in the output filename, and also using seconds+microseconds in
the timestamp.
Fix expectation for idempotency checks

Rspec does not appear to support expecting that any instance of a Class
will *not* receive a message.

Instead, test that we have received our logger message highlighting that no
update was made.
Add missing NatService diff/idempotency tests

NatService diff/idempotency is a side-effect feature of this code.

Add tests to ensure it is behaving correctly:
* diff works in 'no difference' case
* test update_configuration does not run if configuration has not changed
* test diff produces output if there is a pending update.
Correct expectation with idempotency unit test

Test for the log message output saying 'no update needed', rather than
a test for a method not being called (which appears not to be supported by
rspec)
Update test name to reflect actual functionality
Edge Gateway Services knows its services

This method shouldn't be private - it's reasonable for the EdgeGatewayServices class to be able to provide a list of what those services are.

It is a class method but this is clunky - `EdgeGatewayServices.edge_gateway_services`. This will be cleaned up later.
Use correct list of EdgeGatewayServices

Rather than duplicating.