Minimal target "tags" support

This doesn't provide any addtional end-user functionality, but has been useful as a channel for custom tasks and BUILD files to communicate addtional information about targets.

We've been rebasing this change on top of upstream pants for releases at Foursquare for a few months now and we've found it useful in implmenting downstream custom tasks (like our graph rules), which need a place to put additional information in the build graph, while staying out of the internally meaningful things like `labels`.

Testing Done:
https://travis-ci.org/pantsbuild/pants/builds/39211424

Reviewed at https://rbcommons.com/s/twitter/r/1227/
Sync of https://github.com/pantsbuild/pants/commit/d97b7b95881bbc14285a00de4610e59ff717d8b0