Cognition, Metacognition Agents and Architectures