Add __contains__ to app_list, fix not raising on bad key, test cleanup

Made the consistency test more automated and thorough, also fixed
the invalid app test passing on bad key (needs callable)