Switch to storing a composite id in the pool

The `machine.id` isn't knowable during all stages of the machine lifecycle.
Switch to using a composite id consisting of:

  - The path to the Vagrantfile

  - The machine name
Re-work action hooks

Now that we no longer depend on `machine.id`, we can hook in before
`ConfigValidate` and re-work networking calls. This has the benefit of
eliminating the `0.0.0.0` hack and all the edge cases that came along with it.

Also, append directly to the `:machine_destroy` action. This along with the
generality of `ConfigValidate` ensures that auto network isn't tied to the
implementation of a particular provider.
Add PoolManager class for multiprovider support

The PoolManager is a new object that will be serialized and deserialized to the
`pool.yaml` file. This class creates a new Pool of "/24" IP addresses for each
Vagrant provider.
Merge pull request #11 from Sharpie/multiprovider-support

Multiprovider support