Refactored networker significantly to simplify it and improved testing and logging.

Summary of changes:
 * No more using global variables.
 * Using names.MachineTag internally, not a string.
 * No state split in 3 places and coupled in a way making it very hard to test (dropped state.go and implemented ConfigFile which knows how to read its data and render its own config).
 * No more reading and parsing network config files, just rewritting them with managed config as needed.
 * VLAN module loading is only done if needed.
 * Much better and simpler tests.
 * Live tested on MAAS and local (trusty, precise, utopic).
 * Disabling a physical interface causes any dependents to be disabled as well (i.e. VLANs and other virtual interfaces with the same MAC).
 * Rather than parsing (obsolete) network config files, the available network interfaces on the machine are discovered using the net package's functions (updates happen in real-time).
 * Much, much better logging (mostly on DEBUG level, but not always)
 * Not a simple NotifyWorker anymore, as it needs to do more things, i.e. implemented a full-scale worker loop, etc.
 * IMO much easier to read, understand and maintain the code after refactoring.
Because we don't care if /etc/network/interfaces file exists or not on the machine, we'll create it anyway, and because when running in "safe mode" (currently on all providers except MAAS, but this will change to be a bit more sophisticated with a coming-soon patch from Frank) we won't change the network config or run ifup/down commands at all (the CanStart originally came about from an issue Jesse had when testing on the local provider and the networker trying to rewrite his config, but since he's using NetworkManager there is no interfaces file).