Add support for doing remote publishes with an explicit snapshot name

This patch initially contributed by Ian O`Connell allows for local or remote publishing of "named snapshots". Named snapshots skip semantic versioning, and  record a "named_version" in the pushdb.

Testing Done:
additional publishing smoketest

$ yes | PANTS_DEV=1 ./pants goal publish \
  --publish-local=blah \
  --no-publish-dryrun \
  --publish-force \
  --publish-named-snapshot=436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d \
  examples/src/java/com/pants/examples/hello/greet
...

$ ls -lR blah
total 0
drwxrwx---  3 stuhood  admin  102 Aug 21 18:20 com

blah/com:
total 0
drwxrwx---  3 stuhood  admin  102 Aug 21 18:20 pants

blah/com/pants:
total 0
drwxrwx---  3 stuhood  admin  102 Aug 21 18:20 examples

blah/com/pants/examples:
total 0
drwxrwx---  3 stuhood  admin  102 Aug 21 18:20 hello-greet

blah/com/pants/examples/hello-greet:
total 0
drwxrwx---  17 stuhood  admin  578 Aug 21 18:20 436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d

blah/com/pants/examples/hello-greet/436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d:
total 184
-rw-rw----  1 stuhood  admin  34462 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-javadoc.jar
-rw-rw----  1 stuhood  admin     32 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-javadoc.jar.md5
-rw-rw----  1 stuhood  admin     40 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-javadoc.jar.sha1
-rw-rw----  1 stuhood  admin   1635 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-sources.jar
-rw-rw----  1 stuhood  admin     32 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-sources.jar.md5
-rw-rw----  1 stuhood  admin     40 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d-sources.jar.sha1
-rw-rw----  1 stuhood  admin   2046 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.jar
-rw-rw----  1 stuhood  admin     32 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.jar.md5
-rw-rw----  1 stuhood  admin     40 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.jar.sha1
-rw-rw----  1 stuhood  admin    867 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.pom
-rw-rw----  1 stuhood  admin     32 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.pom.md5
-rw-rw----  1 stuhood  admin     40 Aug 21 18:20 hello-greet-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.pom.sha1
-rw-rw----  1 stuhood  admin   1009 Aug 21 18:20 ivy-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.xml
-rw-rw----  1 stuhood  admin     32 Aug 21 18:20 ivy-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.xml.md5
-rw-rw----  1 stuhood  admin     40 Aug 21 18:20 ivy-436ae2dee0e2fc15a6ccfd2fcec5231b8e127a8d.xml.sha1

Reviewed at https://rbcommons.com/s/twitter/r/923/