state: Pending networks and related ops

Created a new collection "pendingnetworks",
which contains information about networks
we'll get from the provider, but before we
can use them in juju (i.e. they have no juju
name, only provider id, and the user has to
explicitly request to "promote" them). Later,
we'll use the result of Environ.ListNetworks()
call to update pending networks in state.

Several new state.State methods added:
 - UpdatePendingNetworks() - creates/updates pending
   networks given a []network.BasicInfo from the provider.
 - PendingNetwork(providerId) - returns a single network
   as network.BasicInfo or a NotFound error.
 - AllPendingNetworks() - returns all pending networks as
   []network.BasicInfo.

In the networks package, added a IsVLANTag() helper to
centralize VLAN tags validation, and added tests.
Isn't there Upsert in mongo for this sort of case? http://docs.mongodb.org/manual/reference/glossary/#term-upsert
Maybe upsert doesn't clear out old fields that we want to make sure are gone?

IMO, it seems very strange to have a simple Update which might actually leave the exact content unchanged actually delete all the records and then add them back again.