variable item types

Instead of allowing only two fixed item types, `lib` and `app`, create an expandable and customizable system which allows the site maintainer to define new types at any time.

## Todo:
- [x] add a method to get a list of supported types
- [ ] testing