Added AllowedCallback to CATEGORY. Tidied code.

Added CATEGORY.AllowedCallback( [Player] ply ) which can be used to
check if a player with special properties ( not related to usergroup )
can access a tab / purchase items in a tab. Would be good for limiting
prisoners ability to buy weapons in Jailbreak for example.

Also tidied up some of Adam's code for AllowedUserGroups.

( I have no idea why GitHub is wanting to push all those already existing commits in. )