Allow string dependencies, don't require pants('')

Summary:
There's really no point to wrapping every dependency in every
BUILD file with the call to pants() to make a Pants target. Add a
utility function "resolve" with converts:

        - string literal to a Pants() target
        - single Pants target is left alone
        - list of strings or Pants targets to a list of Pants targets

Reviewers: benjy

Differential Revision: http://phabricator.prod.foursquare.com/D1878

Auditors: benjy
add apache header
Add unittest for targets.util.resolve
Make resolve() pass-through existing Targets

Previously it only accepted single Pants() targets. This lets
us more robustly handle targets that may have been specified
as string literals.
resolve() no-ops on all non-iterable objects

per the comment on resolve(), some Targets depend on non-Target
objects, e.g. JarDependencies. To keep resolve() as robust as
possible, it will only wrap string literals in Pants() targets,
recurse on iterable arguments' elements, and no-op on everything
else.
unicode string support for string target deps
Use Compatibility.string instead of basestring
clean up resolve logic using collections.Iterable
clean up some comments, per review feedback
couple more feedback nits
Merge pull request #108 from ryan-williams/strdeps

Allow string dependencies, don't require pants('')