When creating a server, if network setup fails with
ExternalNetworkAttachForbidden then we should abort
the build rather than reschedule because it's not
going to work on another host either.
A functional test is added for this since it's hard
to reason about whether or not it works properly
due to the async nature of network setup during
server create and the _build_resources context
manager. It's probably not a bad idea to have a
functional test for a scenario that uses external
networks either (and we can build on this).