perc and struc perc functional again; addition of passive-aggressive and...

Don't feel like you have to do anything (I'll take over from here in the tidying up), but I think this should probably be an exception rather than an assertion failure.  Assertions IMHO make more sense for tripping on logically impossible cases, ie. definite bugs.  It's a bit fuzzy what the difference is, of course, but I think in this case, it's quite easy to see how `use_prob` might be wrongly set to false… but it's not the whoa-this-should-never-happen-in-sane-universe thing that you might use an assertion for.  The former is more "argh, you're using me wrong" or "something happened which I wasn't quite expecting", the latter is "wtf?! that should never happen! I must have done something wrong"