Overhauls category implementation

Important things:

* Removes all `ViewableCategory*` classes since they only existed because of the former separation of the WCF and the ACL package. Permissions are now handled by `Category` itself. Instead there is `AbstractDecoratedCategory` which makes it easy for developers to create own category classes which have additional methods.
* `CategoryNodeList` (now `CategoryNodeTree`) doesn't extend `RecursiveIteratorIterator` anymore which makes working with specific extended `CategoryNodeTree`s easier.