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