Move to using setuptools exclusively.

Take the opportunity to clean up contrib/ as all that functionality
has been subsumed in the oauth2decorator.

Reviwed in http://codereview.appspot.com/5271053/
diff --git a/expand-symlinks.py b/expand-symlinks.py
index 73d2bdd..39b2c21 100644
--- a/expand-symlinks.py
+++ b/expand-symlinks.py
@@ -18,7 +18,7 @@
 """Copy files from source to dest expanding symlinks along the way.
 """
 
-from distutils.dir_util import copy_tree
+from shutil import copytree
 
 import gflags
 import sys
@@ -26,10 +26,27 @@
 
 FLAGS = gflags.FLAGS
 
+# Ignore these files and directories when copying over files into the snapshot.
+IGNORE = set(['.hg', 'httplib2', 'oauth2', 'simplejson', 'static', 'gflags.py',
+                      'gflags_validators.py'])
+
+# In addition to the above files also ignore these files and directories when
+# copying over samples into the snapshot.
+IGNORE_IN_SAMPLES = set(['apiclient', 'oauth2client', 'uritemplate'])
+
+
 gflags.DEFINE_string('source', '.', 'Directory name to copy from.')
 gflags.DEFINE_string('dest', 'snapshot', 'Directory name to copy to.')
 
 
+def _ignore(path, names):
+  retval = set()
+  if path != '.':
+    retval = retval.union(IGNORE_IN_SAMPLES.intersection(names))
+  retval = retval.union(IGNORE.intersection(names))
+  return retval
+
+
 def main(argv):
   # Let the gflags module process the command-line arguments
   try:
@@ -38,7 +55,8 @@
     print '%s\\nUsage: %s ARGS\\n%s' % (e, argv[0], FLAGS)
     sys.exit(1)
 
-  copy_tree(FLAGS.source, FLAGS.dest, verbose=True)
+  copytree(FLAGS.source, FLAGS.dest, symlinks=True,
+            ignore=_ignore)
 
 
 if __name__ == '__main__':