No options are ever passed; this isn't used
No need to set the gateway

Not sure why this was set - possibly left over from an early iteration? But it's not used now.
Add EdgeGatewayConfiguration class

And add a basic test.

Initially this was a repurpose of the EdgeGatewayServices test but instead creating a new test. The only two tests in the EdgeGatewayServices test were commented out and heavily dependent on implementation detail so it makes more sense to start from scratch here.
Add first test and some functionality to config
Add test for one being absent

And add some new helper methods.
Add tests for remaining 'no update' functionality

Many of these are failing as functionality is not in place...
Add all required functionality

There is lots of room for improvement here, for example:
 - if you don't call `update_required` the config is empty
 - `update_required` is complex - the code could be split out into smaller methods
 - possibly the diffing could be moved elsewhere so this just generates the config

However, this refactor enables us to thoroughly unit test the functionality whereby update is not called if the config hasn't changed and spreads some of the responsibility away from the extremely procedural method in `update` formerly.
Clarify the update

Ideally everything in proposed_config takes place without reference to the EdgeGateway as we are passing in the local and remote config for the Differ. However, there is an outstanding issue with the NatService which makes some unnecessary calls which should be dependency injected. There is a story for this: https://www.pivotaltracker.com/story/show/65619490
Merge pull request #154 from alphagov/refactor-update

[#65271738] Refactor update