Add Support for "exclude" to globs in BUILD files

Review Request #3828 — Created May 5, 2016 and submitted — Latest diff uploaded

3228, 3338
jsirois, stuhood, zundel

New Engine has to support "exclude" feature in globs to allow us to parse all BUILD files in the pantsbuild/pants repo.

Changes made:
1. in BaseGlobs class, handle "exclude" argument
2. LazyFileContent now takes 2 pathglobs, 1 for matching globs, 1 for excluding globs.
3. "exclude" logic is added to LazyFileContent class.
4. add a testproject "file_set" under testprojects/tests/python/pants/file_sets/. It has 1 BUILD file and multiple empty \*.py files.
5. add new tests in engine/exp/legacy/test_filemap_integration
6. fix a bug in apply_path_wildcard and apply_path_dir_wildcard in fnmatch should take basename of a path.

Things to note:
1. Nesting exclude is supported. (ie: exclude=\[globs('...', exclude=\[...\])\])