Refactor duplicate dependency detection to be in the BUILD file parsing logic

This is a refactoring of https://rbcommons.com/s/twitter/r/1332/.  The intent of the original
change was to keep BUILD files from declaring the same target twice in a dependency[] attribute.
This refactor was done to avoid triggering this error due to implicit dependency injection.
For example, We don't really care if an explicit dependency is added to a BUILD file that
duplicates a dependency injected by a code generator like protobuf_gen.py.

Now the same case fails with:

```
Exception message: Invalid target TargetAddressable(..., name=greet, **kwargs=...): dependencies must be unique.  '3rdparty:guava' occurs more than once.
 while executing BUILD file /Users/zundel/Src/pants/examples/src/java/com/pants/examples/hello/greet/BUILD
 Loading addresses from 'examples/src/java/com/pants/examples/hello/greet' failed.
  referenced from examples/src/java/com/pants/examples/hello/main:main-bin
  referenced from examples/src/java/com/pants/examples/hello/main:main
```

Testing Done:
CI is running.

Bugs closed: 808

Reviewed at https://rbcommons.com/s/twitter/r/1362/
Sync of https://github.com/pantsbuild/pants/commit/892ce8897af6b8b65221af74e0ddbc0f0eb5246c