Added an order patch and refactored diff/patch
 - Added a type to vpatch, so the patch value type is identified by
      an enum

 - Refactored the diff algorithm to use the new type. In the process
   this caught a number of edge case bugs.

   // TODO: Test permutation of node patches

 - Added naive reordering algorithm and a single test case