Roll-up of several bugfixes and updates

Summary of changes:
* Visitors now always visit nodes in source order.
  Previously, comment nodes may not have been visited in order)

* Scope-tracking information now more extensive
  We now track the state, path, and binding node that introduced a binding into
  a given scope. This info is stored as metadata and a few new utility functions
  are now available to take advantage of this info.

* We now attempt to cache ASTs
  This is more of a power-user optimization, but in some cases it may so happen
  that the same source text is passed in to jstransform.transform(). If/when
  this happens, we will only parse the source text once (the first time)

* A few bugfixes for the arrow-function visitors

* New API on the es6 class transform to reset the UUID counter

* Some minor updates to the class visitors to make them more friendly to other
  transforms

* Some minor updates to the rest param visitors to make them more friendly to
  other transforms

* A new visitor set for concise object methods a la:

  var a = {
    thisIsAProperty: 42,
    thisIsAMethod(paramA, paramB) {
      return paramA + paramB;
    }
  };