Rather minor issue, but the fix should be simple enough so I thought that I'd file this anyway:

When using `react-addons-testutils`, sometimes I write simple errors such as 

```
TestUtils.scryRenderedDOMComponentsWithClass("foo")

// expected:
TestUtils.scryRenderedDOMComponentsWithClass(reactComponentInstance, "foo")

```

This throws a stack trace of ~80 lines with a type error of `TypeError: Cannot read property 'split' of undefined`. Fixing this is trivial (and the first line of the stack trace points to the offending line as expected), but the error itself isn't really obvious. 

Some others such as `scryRenderedDOMComponentsWithTag` don't throw until `findAllInRenderedTree` is reached, which throws a bit more helpful error of `Error: findAllInRenderedTree(...): instance must be a composite component(…)`. 

Would it make sense to check that the arguments passed are valid and throw immediately if they aren't, so the user would end up with errors along the lines of `scryRenderedDOMComponentsWithClass: first argument must be an instance of ReactComponent`?

dispatchConfig,
      ReactDOMComponentTree.getInstanceFromNode(node),
      fakeNativeEvent,
      node
    );
    
    
    event.persist();
    Object.assign(event, eventData);
    if (dispatchConfig.phasedRegistrationNames) {
      EventPropagators.accumulateTwoPhaseDispatches(event);
    } else {
      EventPropagators.accumulateDirectDispatches(event);
    }
    ReactUpdates.batchedUpdates(function() {
      EventPluginHub.enqueueEvents(event);
      EventPluginHub.processEventQueue(true);
    });
  };
}
function buildSimulators() {
  ReactTestUtils.Simulate = {};
  var eventType;
  for (eventType in EventPluginRegistry.eventNameDispatchConfigs) {
    /**
     * @param {!Element|ReactDOMComponent} domComponentOrNode
     * @param {?object} eventData Fake event data to use in SyntheticEvent.
     */
    ReactTestUtils.Simulate[eventType] = makeSimulator(eventType);
  }