[engine] Allow injecting of intrinsic providers to ease testing
Review Request #4263 — Created Sept. 27, 2016 and submitted
|kwlzn, stuhood, yujiec|
It's currently a little hard to test the interactions between task rules and intrinsics because they are injected directly by the NodeBuilder. This change allows the intrinsic providers
to be overridden for testing.
I also added an error condition if two intrinsics have the same key.
It seems a little big, but that's mostly due to the moving of the intrinsic rule class declarations.
CI passed at https://travis-ci.org/pantsbuild/pants/builds/162879047, I ran engine tests locally.