Fix the manager for Category and fix the validation.

The manager for Category now inherits from CachingManager and 
MPTTManager, whereas before it was only using CachingManager, causing
MPTT-related things to fail.

The validation now accounts for edge cases it previously missed, such as
assigning a parent to category that already has children or assigning
a parent that is not a root node. Previous reliance on get_level failed
when parents were assigned but the new level hadn’t been computed yet.