The big overhaul.

Extensive refactoring, cleanup, commented code, added features.
Bugfix for not being able to specify branch.

On first-time deployments the command git ls-files was used to grab the
files to upload. git ls-tree should have been used instead.
Add the ability to tag servers and deploy by tag.