UI revamp

This PR introduces a revamp in the UI, both from a visual perspective and from an API. The API internally is fully backwards compatible so plugins and much of the core continues working. But going forward, we have some new function calls!

Visually, the UI now looks a lot like [Packer](http://www.packer.io) because I felt that output format works very well.

Functionally, the big win in this new format is that we have both more prominent "output" messages (prefixed with "==> " and bolded), _and_ the new "detail" messages (prefixed with spaces, not bold). This lets us differentiate important output or header output from details about a certain operation or less important information. We've never been able to do this before. You might notice in the screenshot below that I already take advantage of this.

Additionally, the colors should make it easier to differentiate between different machines in a multi-machine environment.

This PR also adds extensive unit test coverage for all the `Vagrant::UI` classes, which was somehow missing.

Going forward, I plan on taking full advantage of the new "detail" method to output a lot more relevant information during Vagrant operations.

Screenshot below, ignore the development messages:

![Screenshot](https://f.cloud.github.com/assets/1299/1946429/899686fe-8004-11e3-8a51-90a3808e3ddc.jpg)