Don't restart the metadata proxy on config; read config changes from disk.
Only open the shelve if there's at least one subnet with custom host_routes.
Restart the metadata proxy if networks have been added/removed.
Remove an unnecessary optimization.

Despite its expense, we can't really avoid doing this operation every time;
even if no `host_routes` are provided in the current config, we *must* read the
previous value to determine if any cleanup needs to occur.
Fix flake8 errors.
Refactor the metadata proxy a bit.
Use dogpile.cache instead of Flask-Shelve.
More metadata service cleanup.
Add tests for the metadata proxy.
Merge pull request #52 from ryanpetrello/metadata-proxy-optimization

Metadata proxy and config push optimization