call vagrant directly to get hostnames/box names

-no longer makes the assumption that files are parseable, just call vagrant
    directly to get the information for status|box list
-cache results until Vagrantfile changes
what do you mean?  is the comment required?

I am trying to make https://github.com/robbyrussell/oh-my-zsh/blob/e7fdb028b52505947c7c3eb088586590f5b0b8cd/plugins/vagrant/_vagrant#L4 and this one match to make maintenance easier.