baum-welch improvements, memory improvements in progress

Baum Welch: (1) Improved speed by only looking at edges that exist in the FB algorithm. (2) In progress making memory updates. (3) Re-added transition pseudocount regularizer, specified by adding "transition_pseudocount=<double>" when calling Model.train. Pseudocounts are only added to edges which already exist, and higher pseudocounts mean transition probabilities are effected less by new data.  

Forward Backward: (1) Sped up a little by only checking edges which exist.

Memory Usage: Currently, there are several len(state)**2 matricies. This is not good for large HMMs, which are always sparse (complete graphs are always small). I am changing the memory load to be proportional to len(states)**2 to be ~2*len(edges). This means that sparse matrices will get huge decreases in memory used, but graphs with an edge density of ~0.5 will be bigger, which is a good tradeoff for now, as those will be small already. THIS IS IN PROGRESS. New version will be released soon incorporating these updates.