Content type itself as entity
I don't know if it goes far enough for you, but the Content type groups module helps you categorise content types.


  Content type groups was designed to handle the use case when you need to populate select boxes or other interface elements with certain content types but not others. This module allows you to create an unlimited number of groups of content types through the UI. Once a group is created, it can be referenced in code using API functions and in Views.
  
  Example
  
  Let's say you're organizing your media collection. You have the following content types: book, movie, audio, article (for your blog about your collection), and page (for some static content).
  
  Create a content type group called Media and add the book, movie and audio types. You have just created a logical grouping between the content types to show that they are related. This makes it easier for future developers to understand the relationship between various content types.
  
  Now let's say you start collecting old magazines. You create a new content type called magazine and add it to the Media content type group. Any place where Media is referenced will automatically reflect the change; there is no need to track down all Views or lists.
  
  This module is being rewritten to turn content type groups into entities, with a dependency on Entity API. The 2.x branch is heavily under development and not ready for any site use.