Fix-up random seeds: consistency and unit tests

All random seeds are now checked (and only checked) by misc._check_seed, which now also allows for np.random.RandomState objects.

Permutations of samples should now be determined by the seed given to model.sampler, not the np.random global state.

There are now unit tests for misc._check_seed and to verify that the model output is exactly reproduced, given the same seed.

Note: I haven't actually run these tests yet since it's a bit of a pain to compile pystan, but they are pretty simple so I think there is a decent chance they will just work when Travis CI tries them.