training done in batches now

Previously, during training, a matrix of n_states by n_total_observations was created. If we have either a lot of training data, or a big model, or both, this creates a huge matrix. This is not the best way to go about this, especially if we also have tied states, as is likely on large models. To fix this, for every sequence, observations are appended to a list for each state if they pass a threshold of weighting, default of 1e-8. Tied states are properly calculated per sequence, and only one list of symbols and weights are calculated for each set of tied states to save memory.

This removed both emitted_symbols and emission_weights, two large matrices which scaled proportional to the total number of characters summed across all sequences. Speed does not appear to be significantly affected, but memory usage is down.