Issues were:
* `settings_file` `ValidateFunc` needs to expand homedir just like the
`configure` does, otherwise ~-based paths fail validation
* `isFile` was being called before ~-expand so configure was failing as well
* `Config` was swallowing error so provider was ending up with `nil`,
resulting in crash
To fix:
* Consolidate settings_file path/contents handling into a single helper
called from both `validate` and `configure` funcs
* Return err from `Config`
To cover:
* Added test case to validate w/ tilde-path
* Added configure test w/ tilde-path
We need to decode both the Raw config and the parsed Config to make
sure all set keys are visible. Otherwise keys that will need to be
interpolated later, will be missing causing the validation to fail.
Next to the remaining docs, I also updated the code so any Virtual
Network related API calls are now synchronised by using a mutex (thanks
@aznashwan for pointing that out!).
Only the azure_instance is fully working (for both Linux and Windows
instances) now, but needs some tests. network and disk and pretty much
empty, but the idea is clear so will not take too much time…