Added a version of the minimalist PVM which supports asynchronous tasks.

It does so by making use of Q for composing promises. The code itself details how it achieves this.

In the process of doing so I have also cleaned up the simpler PVM's documentation and code a bit.