Bugfix: Equals and generics

Did not handle generic types (as `<` and `>` are not word characters),
so fixed regex to allow `<` and `>` in type names.

Also, equals had a HUGE bug -- the produced method OR'ed the equality
tests instead of AND'ing them.