schema defaults should be set in the base deployer

simplifies the logic a bit more & makes the config-schema class more
abstract

also move the UNCOMMITTED_CHANGES error message into the `_errors`.
add .nojekyll option, closes #19
if/once that gets pulled into shelljs, remove it
DeployConfigSchema isn't specific to deployers

update name & docs
also use a more explicit name than "config". that was a little confusing
push some changes to readme.md

not final... the .opts thing was never agreed upon so that needs to be
delt with
fix list of deployers

config-schema and deployer were getting included in the list of
deployers because of indx. move them out of that folder
edit location of deployer.coffee in other files

also fix configSchema name in gh-pages
disable unfinished deployers

don't want people trying to use those yet
simplify JS API (now matches readme)
prevent opts from getting shared between deployers
make deployers into subcommands

get rid of interactivity (for now)
generate (almost) the whole CLI from JSONSchema (in the deployers)
prevent gh-pages from deleting git-ignored dirs
add support for array type from jsonschema
upgrade readdirp
automatically normalize paths
add @_config property

At first I wanted to make deployers stateless, but that's getting to be
a huge pain because of how many things need to get passed around between
functions.
.gitignore doesn't need to be ignored

By ignoring it, we force all the files that are in there to not be
deployed, but we can't assume that... maybe make it an option later tho.

Also, since .gitignore files need to be committed, we'll get it back
when the deploy is over.
add ignore option for all deployers
make `getFileList()` paths relative to projectRoot
rewrite prep & cleanup functions

We used to rely on git to restore all the files to normal when we were
done, but that doesn't work if files aren't in the git history. So, now
we move them all into a tmp directory, copy out the ones that we
actually want to deploy (using our fancy new getFileList fn), commit, &
restore the files from the tmp dir. Doesn't rely on git at all and all
gitignored files are kept the same as they were before.