Refactor class-level members in sequence module

Class-level attributes are now static methods. This fixes a number of issues:

- removes the danger of accidentally defining static attributes (e.g., temporary variables used in a for loop)
- complement mapping can now access the gap alphabet, so we don't need to remember to update gap character info in two places
- users won't be able to accidentally update things like valid IUPAC characters, complement mapping, etc.
- removes some duplicate code involved in constructing a few of the members

Additionally, ```alphabet``` and ```gap_alphabet``` are now static members.

Fixes #154 #167.