The only thing that exists is contrast, and we ascribe these contrasts with conventional labels to make it easier to talk to each other. The fact that we call all these different things /p/ is a descriptive convenience.
I was under the impression that all phonemes could be described with reference to distinctive features, depending on what language they were a part of.
Anyway...
Everything I'm saying about phonemes applies to features as well. If your theoretical model presumes the existence of features, then that's actually your basis of contrast. Phonemes then become composites and nothing more.
There is no universal test, in the same way that the "bat vs pat" test is valid only within English.
I disagree. Minimal pairs are a kind of test... no?
Minimal pairs are a demonstration of contrast. That's it. They do not, at face value, tell you anything about the nature of the contrast. There is nothing inherent to the universe that mandates certain kinds of contrasts to exist in language. These contrasts are language specific, and it is methodologically dangerous to go in assuming we should be able to find minimal pairs of a particular type in a given language.
In other words, you just need to look for distributional criteria: syntactic and morphological contexts in which one class of word can appear but another can't. That's it. We can't tell you ahead of time what those contexts will be. Daniel has illustrated some of those contexts for English, but as he says there is no reason those same distributional criteria will work in the languages you are working on.
Typologically speaking, most languages make a distinction in basic predication. If you really can say "This big is dog" as easily as "This dog is big", it is entirely possible that the language does not distribute nouns and adjectives contrastively. More tests are needed, but that's a good start.