feat(network): Add support for blind interfaces

It is valid for an interface to reference another, otherwise undeclared,
interface (i.e. a bond enslaves eth0 without eth0 having its own iface stanza).
In order to associate the two interfaces, the undeclared interface needs to be
implicitly created so that it can be referenced by the other. This adds the
capability to forward-declare interfaces in addition to cleaning up the
process a little bit.
fix(network): Take down all interfaces properly

The map of interfaces wasn't being populated correctly. Also, clean up some prints.
feat(network): Add support for hwaddress

Currently only supports the ether mode of hwaddress. No immediate plans
to support ax25, ARCnet, or netrom.
fix(network): Generate prefixes to ensure proper lexicographical ordering

In order for networkd to properly configure the network interfaces, the configs must be
prefixed to ensure that they load in the correct order (parent interfaces have a lower
prefix than their children).
doc(debian-interfaces): Add basic docs for convert-netconf
HttpClient: Wrap errors with error classes
metadata-service: Add new datasource to download metadata

WIP