Add String type and static Set<String> types

*allows for built-in types as well as user-made types
*getTypes() returns the user-made types
*addType() adds a new type to the static class
Add metadata for custom "tagging" of items
Changed Item's member "keywords" to "tags." Moved "keywords" to the Article class, where it now applies to academic keywords specific to the article

*also added new remove methods to Article as well as Item, and static members for when sets are empty