Bug 969273: Move JSPrincipals-related types and functions to their own header. r=mrbkap

JSSubsumesOp seems to have gotten dragged into Class.h somehow, but it's
not a metaobject protocol type at all. It belongs with JSSecurityCallbacks
and friends, which together form a chunk that could be neatly abstracted.
Bug 969273: Implement a toy principal type for the JS shell, for testing. r=mrbkap r=waldo