We want to strip the code _that implements PropTypes validation functions_ in production. This doesn’t mean `React.PropTypes` won’t exist—just that the functions will throw in production every time.

I did an initial attempt at this in #6401 but it’s too much of a change because people might be calling `PropTypes` in production right now for introspection, and we’d need to **deprecate calling them in production** before actually turning them into shims that throw errors.

@spicyj [suggested](https://github.com/facebook/react/pull/6401#issuecomment-224386567) a good first step: we should pass an extra argument to propType checkers. We would warn if that argument is not passed (or, if passed, does not match our “secret” value). This way we can detect if somebody manually calls `PropTypes` validators, and warn with `console.error` in production.

If you’d like to work on this, please comment here so we don’t have many people implementing this at the same time. You would need to:
1. Pass an extra argument to prop type checkers.
2. In production, warn inside the prop type checkers if they don’t receive the expected extra argument.
3. The warning should say something like `You are manually calling React.PropTypes validation functions in a production build. This is deprecated and will not work in the next major version.`
4. Don’t forget to write tests. You can peek at #6401 to see how to write tests that simulate production environment.
5. Send a PR and we’ll discuss further!

LinkPropTypes.link(React.PropTypes.any),
      {requestChange: emptyFunction},
      'Required prop `testProp.value` was not specified in `testComponent`.'
    );
    typeCheckFail(
      LinkPropTypes.link(React.PropTypes.any),
      {value: null, requestChange: null},
      'Required prop `testProp.value` was not specified in `testComponent`.'
    );
  });
  it('should allow valid links even if no type was specified', function() {
    typeCheckPass(
      LinkPropTypes.link(),
      {value: 42, requestChange: emptyFunction}
    );
    typeCheckPass(
      LinkPropTypes.link(),
      {value: {}, requestChange: emptyFunction,
    });
  });
  it('should allow no link to be passed at all', function() {
    typeCheckPass(
      LinkPropTypes.link(React.PropTypes.string),
      undefined
    );
  });
  it('should allow valid links with correct value format', function() {
    typeCheckPass(
      LinkPropTypes.link(React.PropTypes.any),
      {value: 42, requestChange: emptyFunction}