Stricter functional test validation

This changes the way that the functional tests validate the artifact
directory structure and contents. Previously, we only asserted on the
presence of the specified files. Now, we'll also assert on the absence
of unspecified files -- that is, we fail the test if any unexpected
files are present in the build artifact directories.
Put functional test framework files in own directory

This is just a simple organization change. No functionality changes.
Make shallow cloning optional

- Adds a param to the Git project type to disable shallow
cloning.
- Required for slaves to clone from master, you cannot clone
from a shallow repo.
- Clones default to full (shallow=False)
Add another test
Merge pull request #39 from box/more_functional_test_validation

Stricter functional test validation
Merge branch 'reorg_functional_test_framework'

Conflicts:
	test/framework/functional/base_functional_test_case.py
Merge pull request #42 from box/clones_do_not_need_to_be_shallow

Make shallow cloning optional
Slaves should pull git repos from the master

- This changes our original design of passing the
project type parameters down to the slaves verbatim.
We now modify them so the url points to the master's
Git repo
Add tests, respond to review feedback, respect shallow param