* Improve parameter precondition type safety
Also removes some terrible code which was left over when I first
implemented parameter preconditions. I don't know why that was there.
With this commit, parameter preconditions should be much safer as they
use generic methods instead of janky casting of objects.
* Remove generic CheckPreconditions method