upload api always uploads a .tar.gz to destination

also support empty directories/etc. in archives, and redo tests to not use
fixtures.

upload step test asserts against the actual payload that gets uploaded, which
is way less fragile

Signed-off-by: Phan Le <ple@pivotallabs.com>
Merge branch 'master' of https://github.com/cloudfoundry-incubator/executor

Signed-off-by: Phan Le <ple@pivotallabs.com>

Conflicts:
	steps/upload_step/upload_step.go
	steps/upload_step/upload_step_test.go
use NoopStreamer instead of nil checking errywhere

Signed-off-by: Phan Le <ple@pivotallabs.com>