Implement pseudo-polymorphic list via of() decorator
Refactor tests
improve module organization
Change special classmethods to use internal syntax.
Add matching function
Merge branch 'feature/of' into develop