[align] refactor align code
[align] refactor align code

Refactors alignment code into a series of functions, each of which can cause the command to fail by throwing a custom exception. This is necessary to allow future implementation of add-to-align functionality without causing the code flow to become too complex. Also improves some help messages & adds a few more error checks.
blab/nextstrain-augur,nextstrain/augur,nextstrain/augur,nextstrain/augur