Various fixes/enhancements

Broken into three commits now (as suggested), and the tests pass.
If the observation sequences are not all of equal lengths, then calling np.asarray and flatten on the observations won’t work. For starters, it won’t flatten, and second, it changes the datatype to an object (when it needs to be an int, by the first check). When training an HMM with multiple observation sequences (as hmmlearn is designed to do), the old code would prevent a list of observation sequences from being accepted if they had any different lengths.