code: function getOrderIndependentHash(object) {
      var accum = 0;
      var type = realTypeOf(object);
  
      if (type === 'array') {
        object.forEach(function (item) {
          // Addition is commutative so this is order indep
          accum += getOrderIndependentHash(item);
        });
  
        var arrayString = '[type: array, hash: ' + accum + ']';
        return accum + hashThisString(arrayString);
      }
  
      if (type === 'object') {
        for (var key in object) {
          if (object.hasOwnProperty(key)) {
            var keyValueString = '[ type: object, key: ' + key + ', value hash: ' + getOrderIndependentHash(object[key]) + ']';
            accum += hashThisString(keyValueString);
          }
        }
  
        return accum;
      }
  
      // Non object, non array...should be good?
      var stringToHash = '[ type: ' + type + ' ; value: ' + object + ']';
      return accum + hashThisString(stringToHash);
    }
docs: Gets a hash of the given object in an array order-independent fashion also object key order independent (easier since they can be alphabetized)