Track downloaded base boxes URLs into a state file and allow hooking into base boxes removal

I've been willing to do this for a while and last night I was bitten by an issue that would be easily diagnosed if I knew from where the box was downloaded. Basically the URL written on the Vagrantfile was different from the one I downloaded but both boxes had the same name :(

The newly added `StateFile` class can be improved but as usual, I think this is a good start :)

Reference: https://github.com/mitchellh/vagrant/issues/2293
/cc @mgedmin