Project restructure and category document support

Abstract class CreateDocuments added, CreateCategoryDocuments and
CreateTagsDocuments extend this class to avoid duplicate code, though
there still is a fair bit of duplication. Easy enough to fix by
implementing inside abstract class with the target parameter.

Category documents are now generated and metrics calculated just as with
Tags documents. Category documents generate inside a folder called
userCats that is created at runtime.

Added DataGeneration/userCats/ and some README to .gitignore