Add FlagNames() method to Context

It's often useful to list all defined flags prior to launching the
program for debugging/logging purposes. This takes away the boilerplate.
Adding VersionPrinter and tests.
making all pathing for cli local in tests for easier fork testing
running go fmt
add completion file for zsh
Starting to hack in some env var configuration goodness
Updating structs to use labels, adding tests for env stuff
Addressing `go vet` offenses
Merge remote-tracking branch 'origin/master' into env-config-fun

Conflicts:
	README.md
	app_test.go
	cli_test.go
copy the CommandNotFound when running as a subcommand
move to CommandNotFound copy to startApp
Print author
Do not show empty description section
Unify template formatting
Merge pull request #108 from modcloth/env-config-fun

Adding support for default from the env
Merge pull request #122 from AudriusButkevicius/author

Print author
Added contributor guidelines
Update README.md
Merge pull request #123 from AudriusButkevicius/help

Additional help cleanup
Merge pull request #121 from KAllan357/add_cnf_to_subcommand

Copy CommandNotFound into the NewApp for subcommands