Fix all the instance checks to be more exacting.

In theory there should never be an instanced site with promotions that don't have an instance set, and they certainly should not be loaded in an instanced admin. So throw an exception if we're in an instanced admin and the promotion's instance does not match the admin's instance or if the promotions instance is null.
make all the classes do the instance checking in it's own method.

This brings Details and Report in line with the various edit pages.